Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

สร้างและ Parse ไฟล์ .plist ของ Mac OS X ด้วย Python (plistlib)

ไฟล์ .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