제2장. 함수와 함수형 프로그래밍
파일 입출력과 데이터 핸들링의 원리
파이썬을 실무에 적용하다 보면 파일에 데이터를 기록하거나, 외부 파일로부터 정보를 읽어오는 일이 빈번합니다. 텍스트, 바이너리, CSV 또는 JSON과 같은 다양한 데이터 형식, 그리고 안전하고 효율적인 파일 처리 방식까지 익혀야 진정한 중급자의 역량을 갖췄다고 할 수 있습니다.
텍스트 및 바이너리 파일 다루기
파이썬에서 파일을 다루는 과정은 세 단계로 이루어집니다. 먼저 open()
함수를 통해 파일을 연 뒤, 데이터를 읽거나 쓰는 작업을 수행합니다. 모든 작업이 끝나면 파일을 반드시 닫아야 자원이 적절히 회수됩니다. 텍스트 파일(일반 문서)은 'r'
, 'w'
, 'a'
모드 등으로, 바이너리 파일(이미지, 영상 등)은 'rb'
, 'wb'
, 'ab'
와 같은 모드를 지정해 다룹니다.
파일 각 줄을 반복적으로 읽고 싶을 때는 파일 객체 자체를 순회하거나, readline()
및 readlines()
메서드를 사용하면 유용합니다. 쓰기 작업에서는 새로운 내용을 직접 기록하거나, 기존 파일에 덧붙일 수도 있습니다.
CSV, JSON 등 다양한 데이터 포맷 활용
실제 데이터 분석이나 웹 프로그래밍에서 주로 사용되는 포맷이 바로 CSV와 JSON입니다. CSV(Comma Separated Values)는 표 형식 데이터를 다루는 데, 파이썬의 csv
모듈을 활용하면 행과 열 단위로 데이터를 손쉽게 읽고 쓸 수 있습니다. csv.reader
, csv.writer
객체를 통해 복잡한 인코딩이나 구분자 설정도 간단하게 처리할 수 있습니다.
JSON(JavaScript Object Notation)은 웹 API와 데이터 전송에서 자주 활용됩니다. json
내장 모듈을 이용하면 파이썬의 딕셔너리와 리스트 구조를 손쉽게 JSON 형식으로 변환하거나, 외부 JSON 파일을 곧바로 파이썬 객체로 불러올 수 있습니다. 이처럼 데이터 교환 및 저장 포맷에 대한 이해는 중급 개발자에게 필수적인 역량입니다.
컨텍스트 매니저와 with문의 힘
매번 파일을 열었다가 닫는 일련의 과정을 수동으로 처리하다 보면, 예기치 않게 예외가 발생했을 때 파일이 닫히지 않을 위험이 있습니다. 이 문제를 우아하게 해결하는 파이썬만의 방식이 바로 컨텍스트 매니저와 with
문입니다. with open('파일명', 'r') as f:
와 같은 구문을 사용하면, 블록이 끝나는 즉시 파일이 자동으로 닫혀 안전하고 명확한 자원 관리가 가능합니다.
컨텍스트 매니저는 파일 입출력 외에도 데이터베이스 연결, 네트워크 소켓, 임시 리소스 관리 등 다양한 환경에서 폭넓게 활용할 수 있습니다. 자신만의 컨텍스트 매니저를 만들어 자원 할당과 해제를 제어할 수도 있습니다.
마치며
이 장을 통해 파일 시스템의 다양한 데이터 형식과 입출력 원리, 그리고 안전한 자원관리를 위한 파이썬의 기법들을 익혔을 것입니다. 실제 프로젝트에서 이들이 어떻게 적용되는지 반복적으로 연습하고, 예외 상황에도 강한 코드를 구현하는 연습을 이어가세요.