2.1 전체 파일 읽기
Python에서는 텍스트 파일을 읽는 여러 가지 방법이 있어. 각 방법마다 장점이 있어서 다양한 상황에 맞게 사용할 수 있어. 텍스트 파일을 읽는 주요 방법으로는 전체 내용 읽기, 한 줄씩 읽기, 문자 수 지정하여 읽기 등이 있어.
read() 메서드는 파일의 모든 내용을 하나의 문자열로 읽어.
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()
이건 파일을 읽는 아주 간단한 방법이야 — 메서드 한 번 호출하면, 파일의 모든 내용이 문자열로 들어와. 하지만 단점도 있어 — 만약 파일이 200MB 로그처럼 크다면, 읽는 게 느릴 것이고 애플리케이션의 메모리가 금방 소모될 거야.
2.2 파일의 모든 줄 읽기
read() 메서드의 대안으로 readlines() 메서드가 있어. 이 메서드도 파일 전체를 메모리에 읽지만, 하나의 큰 문자열이 아니라 문자열 목록으로 반환해 — 파일의 각 줄이 리스트의 개별 요소로 들어가게 돼.
readlines() 메서드는 파일의 모든 줄을 읽고 리스트 형태로 반환해.
file = open('example.txt', 'r')
lines = file.readlines()
for line in lines:
print(line.strip()) # strip()는 불필요한 공백과 줄 바꿈 문자를 제거해
file.close()
이 방식은 파일 내용을 한 줄씩 처리해야 한다면 유용해. 하지만 큰 파일에 대해선 메모리를 많이 소비할 수 있어, 모든 줄을 메모리에 올리기 때문이야.
2.3 파일의 줄 반복
file 객체는 내장 반복자를 가지고 있어서 for 루프를 사용해 그 내용을 순회할 수 있어. 이렇게 하면 파일의 모든 내용을 메모리에 올리지 않고 한 줄씩 읽을 수 있어.
예시:
file = open('example.txt', 'r')
for line in file:
print(line.strip())
file.close()
이 방법은 큰 파일에 대해 메모리 측면에서 더 효율적이야, 한 번에 한 줄씩 읽기 때문이야. 하지만 이전 줄로 돌아가거나 읽기 순서를 변경해야 할 때는 처리가 더 복잡할 수 있어.
이 방법과 이전 방법을 또 한 번 비교해 보자:
| 이터레이터 사용 | readlines() 함수 사용 |
|---|---|
|
|
이 방법은 더 간단하고 빨라. 하지만 실제 프로젝트를 진행할 때는 모든 데이터를 한 번에 메모리에 올리고 작업하는 게 더 빠를 때도 있어.
readline()과 readlines() 메서드는 파일에서 줄을 읽는 데 사용되지만, 동작 방식이 달라. readline()은 한 번에 한 줄씩 읽어, 읽기 과정을 제어하고 전체 파일을 메모리에 올리지 않을 수 있게 해 줘. 파일을 한 줄씩 처리하거나 파일이 너무 커서 메모리에 다 올릴 수 없을 때 유용해.
반면 readlines()는 모든 줄을 한 번에 읽어 리스트로 반환해. 이 메서드는 파일의 모든 줄을 빠르게 가져와서 추가 처리할 때 편리해. 하지만 큰 파일의 경우 메모리를 더 많이 소비해, 파일 전체가 메모리에 올라가기 때문이지.
읽기 과정의 메모리 절약과 제어가 중요하다면 readline()이 선호될 수 있고, 바로 파일의 모든 줄을 처리해야 할 때는 readlines()가 편리해.
2.4 파일의 일부 읽기
파일이 너무 크면 여러 조각으로 나누어 읽을 수 있어. read(n) 메서드에 n 파라미터를 전달할 수 있어 — 읽을 문자 수를 나타내. 만약 파일에 있는 문자가 n보다 적다면 read() 메서드는 파일의 끝까지 읽어.
예시:
file = open('example.txt', 'r')
content = file.read(10) # 처음 10개의 문자를 읽는다
print(content)
file.close()
이 방법은 큰 파일을 조각으로 읽어 처리하거나 고정 데이터 블록을 처리할 때 유용해. 하지만 이렇게 하면 파일의 줄 단위 처리가 무시돼 — 줄이 중간에 끊길 수 있어.
2.5 파일을 한 줄씩 읽기
어떤 이유로든 이터레이터를 사용하지 않으려면 파일을 수동으로 한 줄씩 읽을 수 있어. file 객체에는 readline() 메서드가 있어. readlines()와 혼동하지 마.
readline() 메서드는 한 번에 한 줄씩 파일에서 읽어.
예시:
file = open('example.txt', 'r')
line = file.readline()
while line:
print(line.strip())
line = file.readline()
file.close()
이 예시에서는 파일의 내용을 한 줄씩 읽고, 읽은 줄이 비어 있을 때까지 계속해.
GO TO FULL VERSION