파이썬 open 함수로 텍스트 파일 읽는 법, read와 readline의 차이점까지 완벽 정리
📌 파이썬 파일 입출력의 기초, 이 글 하나로 끝내세요!
파이썬을 처음 배우거나 실무에 적용하다 보면 가장 먼저 만나게 되는 기능 중 하나가 바로 파일 입출력입니다.
특히 텍스트 파일을 읽고 쓰는 기능은 데이터 전처리, 로그 분석, 간단한 설정 파일 처리 등 다양한 분야에서 활용됩니다.
그중에서도 open() 함수는 파일을 열고 데이터를 읽거나 쓰는 데에 기본이 되는 핵심 함수인데요.
하지만 처음 접할 땐 read(), readline(), readlines() 등의 함수 차이가 헷갈리기도 하고, 파일을 제대로 닫지 않아 생기는 오류를 겪는 경우도 많습니다.
오늘은 그런 분들을 위해 open 함수의 정확한 사용법과 다양한 파일 읽기 방법을 예제 중심으로 쉽게 설명해드릴게요.
이 글에서는 파이썬의 open() 함수로 텍스트 파일을 읽는 가장 기본적인 방법부터 read, readline, readlines 함수의 차이, with문을 활용한 안전한 파일 처리 방식까지 모두 다룹니다.
지금 바로 따라 해보면서 파일 입출력의 개념을 확실히 익혀보세요!
📋 목차
🔗 open 함수란?
파이썬에서 open() 함수는 파일을 열기 위해 사용하는 가장 기본적인 함수입니다.
텍스트 파일이든 이진 파일이든, 파일을 읽거나 쓰기 위해선 먼저 해당 파일을 열어야 하며, 그때 사용하는 것이 바로 open 함수입니다.
기본 사용법은 아래와 같습니다.
파일 경로와 모드(mode)를 지정해주면 됩니다.
f = open('example.txt', 'r') # 읽기 모드로 example.txt 파일 열기
위 코드에서 'example.txt'는 파일명이고, 'r'은 읽기(read) 모드입니다.
파일을 성공적으로 열면 변수 f는 해당 파일 객체를 가리키게 되며, 이후 read(), readline(), readlines() 등의 메서드를 통해 내용을 읽을 수 있습니다.
💡 TIP: 파일을 다 연 뒤에는 반드시 닫아야 오류를 방지할 수 있어요.
f.close()를 호출하거나, with open() 구문을 사용하면 파일을 자동으로 닫을 수 있습니다.
파일을 열 때 사용하는 mode는 매우 다양합니다.
읽기 전용 ‘r’, 쓰기 전용 ‘w’, 추가(append) 모드 ‘a’ 등이 있으며, 이진 파일 처리 시에는 각각에 ‘b’를 붙여 ‘rb’, ‘wb’처럼 사용합니다.
파일을 열기 전에 해당 파일이 존재하지 않으면 오류가 발생할 수 있으므로, 파일 존재 여부를 확인하거나 예외 처리를 함께 사용하는 것이 좋습니다.
다음 단계에서는 read(), readline(), readlines() 함수의 차이에 대해 자세히 알아보겠습니다.
🛠️ read, readline, readlines 차이
파일에서 텍스트를 읽을 때 사용할 수 있는 주요 함수는 read(), readline(), readlines()입니다.
이름은 비슷하지만 각각의 동작 방식은 다르기 때문에 목적에 맞게 사용해야 합니다.
- 📄read()는 파일 전체 내용을 문자열로 한 번에 읽어옵니다.
- 📌readline()은 한 줄씩 읽어오며, 줄바꿈 문자(\n)를 포함합니다.
- 📚readlines()는 모든 줄을 리스트로 읽어옵니다. 각 줄이 리스트의 한 요소가 됩니다.
실제 코드 예제를 통해 비교해보면 훨씬 이해가 쉬워집니다.
with open('sample.txt', 'r') as f:
data1 = f.read() # 파일 전체 읽기
f.seek(0) # 파일 포인터 초기화
data2 = f.readline() # 첫 줄만 읽기
f.seek(0)
data3 = f.readlines() # 모든 줄 리스트로 읽기
이처럼 각 함수는 반환값의 자료형이 다르고, 메모리 사용량에도 차이가 있으므로 파일 크기나 용도에 따라 적절하게 선택하는 것이 중요합니다.
예를 들어 수백 MB 이상의 대형 로그 파일을 처리할 경우, read()보다 readline()을 반복문과 함께 사용하는 방식이 더 안전할 수 있습니다.
⚠️ 주의: read()는 파일 크기가 클 경우 메모리 부족 오류가 발생할 수 있으니, 반드시 파일 용량을 고려한 후 사용하세요.
다음 단계에서는 파일을 자동으로 닫아주는 with문을 어떻게 활용하는지 알아보겠습니다.
⚙️ with 문으로 파일 안전하게 다루기
파이썬에서 파일을 열고 작업한 후에는 반드시 close()를 호출해서 파일을 닫아야 합니다.
하지만 이 과정을 매번 신경 쓰는 것은 번거롭고, 종종 close()를 깜빡해서 문제가 생기는 경우도 많습니다.
이런 문제를 해결해주는 가장 좋은 방법이 바로 with open() 구문입니다.
파일을 열고 사용하는 전체 과정을 컨텍스트(context) 안에 묶어 자동으로 파일을 닫아주는 기능을 하죠.
with open('log.txt', 'r') as file:
content = file.read()
print(content)
# 파일은 자동으로 닫힘
위 코드처럼 with 블록이 종료되는 시점에 파이썬은 자동으로 file.close()를 호출합니다.
별도로 닫아주는 코드를 작성할 필요가 없어 가독성도 좋아지고, 실수도 줄일 수 있죠.
💡 TIP: with 문은 파일 쓰기('w'), 추가('a'), 이진 모드('rb') 등 모든 모드와 함께 사용할 수 있어요!
또한 with문 안에서 여러 줄을 처리하거나 조건문, 반복문과도 자연스럽게 결합되기 때문에 실제 코딩할 때 매우 유용합니다.
많은 개발자들이 open()과 함께 with을 사용하는 것이 파이썬 파일 처리의 표준이라고 말할 정도예요.
다음은 파일을 열 때 사용하는 다양한 모드들에 대해 알아보겠습니다.
🔌 파일 열기 모드 총정리
파이썬의 open() 함수는 두 번째 인자로 파일 열기 모드를 지정해야 합니다.
이 모드는 파일을 어떻게 다룰지를 결정하는 중요한 요소로, 파일을 읽을 건지 쓸 건지, 텍스트인지 이진인지에 따라 달라집니다.
- 📖
'r': 읽기 전용 (기본값) - ✍️
'w': 쓰기 전용 (파일이 존재하면 내용 삭제) - ➕
'a': 추가 모드 (기존 파일 끝에 내용 추가) - 🔁
'r+': 읽기 + 쓰기 (파일 내용 수정) - 💾
'b': 이진 모드 (예: ‘rb’, ‘wb’)
텍스트 파일을 다룰 경우에는 위와 같은 문자 모드를, 이미지나 오디오 등 바이너리 데이터를 다룰 때는 ‘b’를 함께 사용하면 됩니다.
예를 들어 이미지를 읽기 위해서는 open('image.jpg', 'rb')처럼 작성합니다.
⚠️ 주의: 'w' 모드는 파일이 존재할 경우 내용을 모두 지우고 새로 작성합니다. 실수로 데이터가 사라지지 않도록 주의하세요.
파일 열기 모드는 조합해서도 사용 가능하며, 정확한 모드 선택은 파일을 다루는 목적에 따라 결정해야 합니다.
짧은 스크립트일수록 실수 없이 안전하게 처리하기 위해 with open()과 함께 사용하는 것이 좋습니다.
다음은 실제로 텍스트 파일을 읽고 처리하는 예제를 통해 지금까지 배운 내용을 정리해볼게요.
💡 파일 입출력 실전 예제
지금까지 파이썬에서 파일을 여는 방법과 데이터를 읽는 다양한 방식을 배웠다면, 이제 실제 예제를 통해 개념을 정리해볼 시간입니다.
아래는 텍스트 파일의 내용을 한 줄씩 읽어 들이면서, 특정 키워드를 포함한 줄만 출력하는 실전 코드입니다.
keyword = 'ERROR'
with open('server_log.txt', 'r') as f:
for line in f:
if keyword in line:
print(line.strip())
이 코드는 server_log.txt 파일을 열고, 각 줄에 'ERROR'라는 단어가 포함되어 있으면 그 줄을 출력합니다.
로그 파일이나 대량의 텍스트 파일을 분석할 때 매우 유용한 방식이에요.
반대로, 파일에 데이터를 쓰는 예제도 한 번 살펴볼까요?
이번에는 사용자 입력을 파일에 저장하는 코드를 보겠습니다.
with open('memo.txt', 'w') as f:
f.write("오늘은 파이썬 파일 입출력을 공부했어요.")
이처럼 'w' 모드를 사용하면 파일에 새로운 내용을 쓸 수 있으며, 기존 내용은 모두 덮어쓰게 됩니다.
추가로 저장하고 싶다면 'a' 모드를 사용하면 되죠.
💎 핵심 포인트:
실제 개발에서는 파일 크기, 파일 종류, 데이터 처리 방식에 따라 read() 계열과 write() 계열을 적절히 조합하는 것이 중요합니다.
여기까지 따라오셨다면 이제 파이썬 파일 입출력의 핵심 개념은 모두 익히셨다고 할 수 있어요.
다음은 자주 묻는 질문을 통해 이해를 더 탄탄히 만들어볼게요.
❓ 자주 묻는 질문 (FAQ)
파일을 열었는데 내용이 아무것도 보이지 않아요. 왜 그럴까요?
read() 함수 이후 다시 읽기를 시도했는데 파일 포인터가 끝에 있어서 그렇습니다. f.seek(0)으로 포인터를 처음으로 되돌려주세요.
readline()과 readlines()의 차이는 뭔가요?
readline()은 한 줄씩 문자열로 읽고, readlines()는 모든 줄을 리스트로 읽어옵니다. 반복문과 함께 쓸 땐 readline()이 더 적합할 수 있어요.
open 함수에서 모드를 생략하면 기본값은 무엇인가요?
'r', 즉 읽기 전용 텍스트 모드입니다. 쓰기나 추가를 원하면 반드시 모드를 지정해야 합니다.
파일을 자동으로 닫아주는 방법이 있나요?
with open() 문법을 사용하면 블록이 끝날 때 자동으로 파일이 닫혀서 실수를 방지할 수 있어요.
한글이 포함된 파일을 열면 글자가 깨져요. 어떻게 해야 하나요?
open() 함수에 encoding='utf-8' 인자를 추가해 보세요. 한글 파일은 대부분 UTF-8 또는 EUC-KR 인코딩을 사용합니다.
파일이 없는데 open(‘파일명’, ‘r’)로 열면 어떻게 되나요?
'r')로 열면 FileNotFoundError가 발생합니다. 예외 처리를 추가하는 게 좋습니다.
read()로 파일 전체를 읽으면 메모리 문제가 생기진 않나요?
readline()이나 for line in f: 형태가 더 효율적입니다.
파일 내용을 문자열로 저장하려면 어떤 함수를 써야 하나요?
read() 함수가 파일 전체 내용을 하나의 문자열로 반환합니다. 변수 = f.read() 형태로 사용하면 됩니다.
📌 파이썬 파일 입출력, open 함수부터 read까지 완전 정복
파이썬에서 파일을 다루는 작업은 단순히 데이터를 불러오거나 저장하는 것 이상의 의미를 갖습니다.
이 글에서는 open() 함수의 기본 구조부터 다양한 파일 읽기 함수들인 read(), readline(), readlines()의 차이, 그리고 실무에서 자주 쓰이는 with문 활용법까지 상세히 살펴봤습니다.
또한 각 모드의 특성과 주의점, 실전 예제까지 함께 익혀보며 실제로 파일을 다루는 감각을 키울 수 있었죠.
이제 여러분은 텍스트 파일을 읽고 쓰는 파이썬 코드에서 당황하지 않고, 안정적이고 효율적으로 파일 입출력을 구현할 수 있을 거예요.
🏷️ 관련 태그 : 파이썬기초, 파일입출력, open함수, 텍스트파일, read함수, readline, readlines, with문, 파일쓰기, 파이썬입문, 프로그래밍기초