파이썬 파일 읽기 크기 초과 오류 (Python file read size limit error) 알아보기.

파이썬 파일 읽기 크기 초과 오류 (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

위와 같은 방법을 이용해서 파일을 여러 부분으로 나누어 읽을 수 있습니다.

결론

파이썬에서 파일을 읽을 때, 파일 크기가 커질 경우 메모리 사용량을 조절하기 위해 위와 같은 방법들을 이용할 수 있습니다. 이 중에서도 상황에 맞는 적절한 방법을 선택하여 사용하면, 올바른 방법으로 파일을 처리할 수 있습니다.