파일이 메모리보다 클 수 있다고 가정해
텍스트 파일은 줄 단위로, 바이너리는 정한 크기의 조각으로 읽어. 10GB 파일에 인자 없는 read를 호출하면 10GB 전체를 올리려 해.
임시 파일과 디렉터리는 contextlib 수명으로
NamedTemporaryFile과 TemporaryDirectory는 충돌 없는 위치를 만들고 블록 뒤 정리해. 처리 중간물과 테스트에 고정된 임시 경로를 직접 만들 필요가 없어.
mmap과 메모리 파일
mmap은 파일을 가상 메모리에 연결해 실제로 만지는 쪽만 운영체제가 가져오게 하고 큰 파일의 임의 접근에 유리해. StringIO와 BytesIO는 파일 규약을 가진 메모리 객체라 시험과 출력 수집에 쓰여.
조금씩 읽고 임시 산출물에 완성한 뒤 바꾸는 설계는 메모리뿐 아니라 실패했을 때의 복구 지점도 지켜.