파이썬 파일 읽기 크기 초과 오류 (Python file read size limit error)에 대한 해결책
파이썬에서 파일을 읽을 때, 파일 크기가 매우 큰 경우 메모리에 모두 적재하려고 하면서 메모리 부족 오류가 발생할 수 있습니다. 이를 해결하기 위해 여러가지 방법이 존재합니다. 이 글에서는 대표적인 방법들과 함께 설명하도록 하겠습니다.
1. 파일 크기에 맞는 chunk size 설정하기
대용량 파일을 한번에 모두 읽지 않고, 적당한 크기의 chunk를 설정해 한 번에 일부분씩 읽어 들이는 방법이 있습니다. 이 방법은 파일의 크기가 커질수록 효과가 높아집니다.
python
chunk_size = 1024 * 1024 # 1MB
with open('large_file.txt', 'rb') as f:
while True:
chunk = f.read(chunk_size)
if not chunk:
break
# do something with the chunk
2. 제너레이터를 이용하여 파일 일부분씩 읽기
파일 전체를 한 번에 읽지 않고, 제너레이터를 이용해서 필요한 부분만 읽어올 수 있습니다. 이 방법은 파일 크기가 크더라도 메모리를 절약할 수 있습니다.
“`python
def read_in_chunks(file_object, chunk_size=1024):
while True:
data = file_object.read(chunk_size)
if not data:
break
yield data
with open(‘large_file.txt’, ‘rb’) as f:
for piece in read_in_chunks(f):
# do something with the piece
“`
3. 메모리 맵 파일 사용하기
메모리 맵 파일은 파일을 가상 메모리에 매핑하여, 파일 전체가 메모리에 적재되는 것처럼 동작합니다. 이 방법은 파일 전체를 읽을 때 메모리 사용량을 절약할 수 있습니다.
“`python
import mmap
with open(“large_file.txt”, “r+”) as f:
mmapped_file = mmap.mmap(f.fileno(), 0)
# do something with the mmapped file
mmapped_file.close()
“`
4. 파일을 여러 부분으로 나누어 읽기
대용량 파일을 여러 부분으로 나누어 읽을 수 있습니다.
python
with open('large_file.txt') as f:
for line in f:
splitted_line = line.split(',')
# do something with the splitted line
위와 같은 방법을 이용해서 파일을 여러 부분으로 나누어 읽을 수 있습니다.
결론
파이썬에서 파일을 읽을 때, 파일 크기가 커질 경우 메모리 사용량을 조절하기 위해 위와 같은 방법들을 이용할 수 있습니다. 이 중에서도 상황에 맞는 적절한 방법을 선택하여 사용하면, 올바른 방법으로 파일을 처리할 수 있습니다.