파일 형식

파일 형식 (File Formats)

이 장에서 설명하는 모듈들은 마크업 언어가 아니고 이메일과도 관련이 없는 다양한 잡다한 파일 형식을 파싱합니다.

출처: Python documentation

본문

이 장은 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 파일로 저장·재사용하고, tomllibpyproject.toml 같은 현대 Python 프로젝트의 설정을 읽는 데 쓰입니다. 데이터베이스·스프레드시트 간 데이터 교환은 csv가 담당합니다.

netrc는 셸 도구들이 쓰는 .netrc의 호스트별 인증 정보를 제공하고, plistlib는 macOS 환경설정 파일이나 iOS 앱 번들 메타데이터를 읽고 쓸 때 사용됩니다. 이들 모두 텍스트/이진 형식을 바이트 수준에서 정확히 다루어야 하므로, 모듈이 파싱 규칙을 캡슐화함으로써 프로그래머는 형식 세부 사항을 몰라도 됩니다.

또한 이 장의 모듈들은 인코딩 처리도 세심하게 다룹니다. csvencoding 인자로 파일 인코딩을 지정하고, configparsertomllib는 문서에 명시된 문자셋 규칙을 따르며, plistlib는 XML 형식에서 UTF-8을 기본으로 사용합니다. 이로써 한글 등 다국어 데이터도 정확히 읽고 쓸 수 있습니다.

표준 라이브러리가 아닌 형식이나 특수 요구 사항에는 이 장의 모듈을 서브클래싱하거나 사용자 정의 파서를 결합해 확장하는 것이 일반적이며, 잘 정의된 API 덕분에 확장이 수월합니다.

더 알아보기 (Learn more)