将Python对象序列化为XML(Apple .plist)

3 投票
2 回答
1973 浏览
提问于 2025-04-15 11:40

我需要在Python中读取和保存对象到XML格式,特别是苹果的.plist格式。有没有什么聪明的方法可以做到这一点?有没有现成的解决方案?

2 个回答

2

假设你在使用Mac电脑,你可以用PyObjC这个工具。

这里有一个从plist文件读取数据的例子,来自于使用Python进行系统管理的第27页。

from Cocoa import NSDictionary

myfile = "/Library/Preferences/com.apple.SoftwareUpdate.plist"
mydict = NSDictionary.dictionaryWithContentsOfFile_(myfile)

print mydict["LastSuccessfulDate"]

# returns: 2009-08-11 08:38:01 -0600

还有一个我写的例子,是关于如何往plist文件写数据:

#!/usr/bin/env python

from Cocoa import NSDictionary, NSString

myfile = "~/test.plist"
myfile = NSString.stringByExpandingTildeInPath(myfile)

mydict = {"Nice Number" : 47, "Universal Sum" : 42}
mydict["Vector"] = (10, 20, 30)
mydict["Complex"] = [47, "i^2"]
mydict["Truth"] = True

NSDictionary.dictionaryWithDictionary_(mydict).writeToFile_atomically_(myfile, True)

当我在bash中运行defaults read ~/test时,我得到的结果是:

{
    Complex =     (
        47,
        "i^2"
    );
    "Nice Number" = 47;
    Truth = 1;
    "Universal Sum" = 42;
    Vector =     (
        10,
        20,
        30
    );
}

而且在Property List Editor.app中打开这个文件时,看起来非常不错。

7

可以看看这个链接:plistlib

撰写回答