3

我需要从 XML 读取和序列化对象,尤其是 Apple 的 .plist 格式。在 Python 中最智能的方法是什么?有没有现成的解决方案?

4

2 回答 2

7

查看plistlib

于 2009-05-18T18:54:30.003 回答
2

假设您在 Mac 上,您可以使用 PyObjC。

这是一个从 plist 中读取的示例,来自Using Python For System Administration,幻灯片 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)

然后当我defaults read ~/test在 bash 中运行时,我得到:

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

在 Property List Editor.app 中打开该文件时看起来非常漂亮。

于 2009-08-11T15:45:50.743 回答