파일 형식
파일 형식 (File Formats)
이 장에서 설명하는 모듈들은 마크업 언어가 아니고 이메일과도 관련이 없는 다양한 잡다한 파일 형식을 파싱합니다.
본문
이 장은 Python 표준 라이브러리에서 다양한 파일 형식을 처리하는 모듈들을 정리한 개요 장입니다. 이 장에 문서화된 모듈들은 다음과 같습니다.
csv— CSV 파일 읽고 쓰기. 모듈 내용, Dialects and Formatting Parameters, Reader 객체, Writer 객체, 예제를 다룹니다. 콤마 구분 값(CSV) 형식의 표 형식 데이터를 읽고 쓰는 데 사용합니다.configparser— 설정 파일 파서. 빠른 시작, 지원 데이터 타입, 폴백 값, 지원 INI 파일 구조, 이름 없는 섹션, 값 보간, 매핑 프로토콜 접근, 파서 동작 커스터마이즈, 레거시 API 예제, ConfigParser 객체, RawConfigParser 객체, 예외를 다룹니다. INI 형식의 설정 파일을 읽고 씁니다.tomllib— TOML 파일 파싱. 예제와 변환 테이블을 다룹니다. TOML(Tom's Obvious Minimal Language) 설정 파일을 파싱합니다 (3.11에서 추가).netrc— netrc 파일 처리. netrc 객체를 다룹니다. FTP 등 네트워크 인증 정보를 담는.netrc파일을 처리합니다.plistlib— Apple.plist파일 생성과 파싱. 예제를 다룹니다. macOS 응용 프로그램에서 쓰는 XML/이진 형식의 property list 파일을 다룹니다.
이 모듈들은 각각 특정 파일 형식을 다루며, 서로 다른 도구와 시스템에서 생성된 데이터 파일을 읽고 쓰는 데 사용됩니다.
configparser는 INI 형식 설정 파일의 섹션(section), 키-값 쌍, 주석, 값 보간(interpolation)을 처리합니다. tomllib는 최신 TOML 형식을 읽기 전용으로 파싱합니다(TOML은 설정 파일용으로 설계된 간단한 형식). csv는 스프레드시트 데이터 교환에서 가장 흔한 CSV 형식을 다루고, netrc는 유닉스 ~/.netrc 파일의 머신별 로그인 정보를, plistlib는 Apple 생태계의 property list를 각각 처리합니다.
각 모듈은 자기 파일 형식에 특화된 파싱 규칙과 데이터 타입 변환을 제공하므로, 프로그래머는 외부 도구 없이 순수 Python으로 해당 형식의 파일을 읽고 쓸 수 있습니다.
configparser는 섹션 기반 INI 설정 파일을 다루며, 값 보간(interpolation)을 통해 ${VAR} 형태의 동적 값을 지원하고 매핑 프로토콜로 섹션과 옵션에 접근할 수 있습니다. tomllib는 최신 TOML 형식을 읽기 전용으로 파싱하며 기본 제공 타입(int, float, bool, str, datetime, 배열, 표)을 Python 타입으로 변환합니다.
csv는 구분 기호, 인용 문자, 줄바꿈 처리 규칙을 유연하게 설정할 수 있는 dialect 시스템을 제공하여 여러 형식의 CSV 파일을 처리합니다. netrc는 머신별 호스트, 로그인, 비밀번호 정보를 담는 .netrc 파일을 파싱하고, plistlib는 Apple의 XML 및 이진 property list 형식을 생성·파싱하여 macOS 응용 프로그램 데이터와 상호작용합니다.
이 모듈들은 각자 엄격한 형식 규칙에 따라 데이터를 안전하게 파싱하고 직렬화하며, 잘못된 형식을 만나면 적절한 예외를 발생시킵니다. 이를 통해 다양한 소스의 파일을 표준 라이브러리만으로 신뢰성 있게 처리할 수 있습니다.
각 모듈의 구체적인 용도를 살펴보면, configparser는 애플리케이션의 설정을 .ini 파일로 저장·재사용하고, tomllib는 pyproject.toml 같은 현대 Python 프로젝트의 설정을 읽는 데 쓰입니다. 데이터베이스·스프레드시트 간 데이터 교환은 csv가 담당합니다.
netrc는 셸 도구들이 쓰는 .netrc의 호스트별 인증 정보를 제공하고, plistlib는 macOS 환경설정 파일이나 iOS 앱 번들 메타데이터를 읽고 쓸 때 사용됩니다. 이들 모두 텍스트/이진 형식을 바이트 수준에서 정확히 다루어야 하므로, 모듈이 파싱 규칙을 캡슐화함으로써 프로그래머는 형식 세부 사항을 몰라도 됩니다.
또한 이 장의 모듈들은 인코딩 처리도 세심하게 다룹니다. csv는 encoding 인자로 파일 인코딩을 지정하고, configparser와 tomllib는 문서에 명시된 문자셋 규칙을 따르며, plistlib는 XML 형식에서 UTF-8을 기본으로 사용합니다. 이로써 한글 등 다국어 데이터도 정확히 읽고 쓸 수 있습니다.
표준 라이브러리가 아닌 형식이나 특수 요구 사항에는 이 장의 모듈을 서브클래싱하거나 사용자 정의 파서를 결합해 확장하는 것이 일반적이며, 잘 정의된 API 덕분에 확장이 수월합니다.