ไฟล์ .plist (Property List) ใช้ใน Mac OS X/iOS เก็บคุณสมบัติแอปพลิเคชัน โมดูล plistlib ให้ Interface อ่าน/เขียนไฟล์เหล่านี้
รูปแบบข้อมูลที่รองรับ
- Strings, Integers, Floats, Booleans
- Tuples, Lists
- Dictionaries (Keys ต้องเป็น Strings)
- Data (bytes), Date objects
- Top-level object ปกติเป็น Dictionary
ฟังก์ชันหลัก
| Function | คำอธิบาย |
|---|---|
load(fp, fmt=None) | อ่าน plist จาก binary file object fmt: None=Auto, FMT_XML, FMT_BINARY |
dump(value, fp, fmt=FMT_XML) | เขียน plist ลง binary file object fmt: FMT_XML หรือ FMT_BINARY |
loads(data, fmt=None) | อ่าน plist จาก bytes object |
dumps(value, fmt=FMT_XML) | คืนค่า plist-formatted bytes object |
ตัวอย่าง: เขียน plist ไฟล์
import plistlib
properties = {
"name": "Ramesh",
"College": "ABC College",
"Class": "FY",
"marks": {"phy": 60, "che": 60, "maths": 60}
}
with open('props.plist', 'wb') as f:
plistlib.dump(properties, f)
ตัวอย่าง: อ่าน plist ไฟล์
with open('marks.plist', 'rb') as fp:
pl = plistlib.load(fp)
print(pl)
ตัวอย่าง: ใช้งานกับ Bytes (ไม่ต้องการไฟล์)
import plistlib
data = {"version": 1.0, "items": ["a", "b", "c"], "enabled": True}
plist_bytes = plistlib.dumps(data)
print(plist_bytes) # b'\n'
parsed = plistlib.loads(plist_bytes)
print(parsed)
# {'version': 1.0, 'items': ['a', 'b', 'c'], 'enabled': True}
รูปแบบไฟล์
- XML (FMT_XML): มาตรฐาน อ่านง่าย ใช้ได้ทั่วไป
- Binary (FMT_BINARY): เนื้อหาแน่นอน ขนาดเล็กกว่า เร็วกว่า ใช้ใน iOS/macOS
การใช้งานจริง
- อ่าน/เขียน Config ของ macOS/iOS Apps
- แลกเปลี่ยนข้อมูลระหว่าง Python และ Swift/Objective-C
- จัดการ LaunchAgents, LaunchDaemons, Preferences
- Parse Info.plist ใน App Bundles
ข้อจำกัด
- Dictionary Keys ต้องเป็น Strings เท่านั้น
- ไม่รองรับ Custom Classes (ต้อง Serialize เองก่อน)
- Date objects ต้องเป็น datetime.datetime (UTC)
- Binary format ต้องการ macOS/iOS libraries สำหรับบาง Features