기본 콘텐츠로 건너뛰기

라벨이 파일 압축인 게시물 표시

Python에서 파일 I/O 효율적으로 처리하는 방법 (with gzip, pathlib 등)

안녕하세요! 백엔드 개발하면서 늘 골치 아팠던 게 바로 대용량 파일 처리였어요. 데이터 분석이나 로그 처리할 때 엄청난 크기의 파일을 다루다 보면, 프로그램이 멈춰버리거나 메모리가 터져버리는 경험, 한 번쯤은 다들 해보셨죠? 저도 그랬거든요. 그래서 오늘은 제가 터득한 파이썬 파일 I/O 효율적으로 처리하는 팁들을 공유하려고 합니다. gzip , pathlib 같은 멋진 도구들을 활용하는 방법, 그리고 제가 직접 겪었던 시행착오까지! 우선, 기본적인 파이썬 파일 입출력은 간단하긴 하지만, 대용량 파일에는 역부족이에요. 그냥 open() 하고 read() 하면 메모리가 순식간에 꽉 차버리거든요. 마치 엄청난 양의 빨랫감을 한꺼번에 세탁기에 넣은 것 같은 느낌이랄까요? 그래서 효율적인 방법이 필요해요! 핵심은 세 가지입니다. 첫째, with 문 을 꼭 사용하세요. 파일 열고 닫는 걸 자동으로 해줘서, 자원 누수를 막아줍니다. try...except...finally 보다 훨씬 깔끔하고 안전해요. 이건 마치 자동차 시동 끄는 것과 같은 거죠. 안 끄면 연료 낭비잖아요? 둘째, 압축 파일을 다룬다면 gzip 모듈 이 최고입니다. .gz 파일을 쉽게 처리할 수 있어요. 대용량 파일은 압축해서 처리하는 게 메모리와 시간을 엄청나게 절약해줍니다. 저는 한번은 압축 안 하고 처리하다가 프로그램이 뻗어버린 적이 있어요… 정말 끔찍했죠. 셋째, pathlib 모듈 은 파일 경로를 객체처럼 다뤄서 코드를 훨씬 깔끔하게 만들어줍니다. 다양한 운영체제에서도 잘 돌아가고요. 예전에는 파일 경로를 문자열로 직접 조작했는데, pathlib 를 쓰니 코드가 얼마나 보기 좋아졌는지 몰라요. 마치 정리가 잘 된 서랍장 같은 느낌이랄까요? 그리고 중요한 게 하나 더 있는데, 바로 버퍼링 이에요. 데이터를 조금씩 모아서 한꺼번에 입출력하는 방식인데, 대용량 파일 처리에 효과적입니다. 그리고 rea...