Python plistlib 모듈이란?
'.plist' 확장자를 가진 파일은 macOS 애플리케이션이 애플리케이션 속성(application properties)을 저장하는 데 사용하는 속성 목록(property list) 파일입니다. Python 표준 라이브러리의 plistlib 모듈은 이러한 속성 목록 파일을 읽고 쓰기 위한 인터페이스를 제공합니다.
.plist 파일 형식은 딕셔너리, 리스트, 숫자, 문자열 같은 기본 객체 타입을 직렬화(serialize)합니다. 일반적으로 최상위 객체는 딕셔너리입니다. plist 파일에 데이터를 쓰거나 파일을 파싱할 때는 dump()와 load() 함수를 사용하고, 바이트 문자열 형태로 직렬화된 데이터를 처리할 때는 dumps()와 loads() 함수를 사용합니다. 값으로 사용할 수 있는 타입은 문자열, 정수, 실수, 불린(bool), 튜플, 리스트, 딕셔너리(단, 키는 반드시 문자열이어야 함)입니다.
plistlib 모듈의 주요 함수
이 모듈은 다음과 같은 함수들을 정의합니다.
| 함수 | 설명 |
|---|---|
| load() | 읽기 가능한 바이너리 파일 객체가 가리키는 plist 파일을 읽습니다. fmt 인자로 파일 형식을 지정할 수 있으며, 유효한 값은 다음과 같습니다.
|
| dump() | 쓰기 가능한 바이너리 파일 객체가 참조하는 plist 파일에 값을 씁니다. fmt 인자는 plist 파일의 형식을 지정하며 다음 값 중 하나를 사용합니다.
|
| loads() | bytes 객체에서 plist 데이터를 로드합니다. 키워드 인자에 대한 설명은 load() 함수 문서를 참고하세요. |
| dumps() | 값을 plist 형식의 bytes 객체로 반환합니다. 키워드 인자에 대한 설명은 dump() 함수 문서를 참고하세요. |
plist 파일 생성 예제
다음 스크립트는 직렬화된 딕셔너리를 plist 파일에 저장합니다.
import plistlib
properties = {
"name": "Ramesh",
"College": "ABC College",
"Class": "FY",
"marks": {"phy": 60, "che": 60, "maths": 60}
}
with open('properties.plist', 'wb') as fp:
plistlib.dump(properties, fp)plist 파일 읽기 예제
저장된 plist 파일을 읽을 때는 load() 함수를 사용합니다.
import plistlib
with open('properties.plist', 'rb') as fp:
pl = plistlib.load(fp)
print(pl)위 코드를 실행하면 파일에서 읽어온 데이터가 딕셔너리 형태로 출력됩니다.
{'name': 'Ramesh', 'College': 'ABC College', 'Class': 'FY', 'marks': {'phy': 60, 'che': 60, 'maths': 60}}