3

XML、特に Apple の .plist フォーマットとの間でオブジェクトを読み込んでシリアル化する必要があります。Pythonでそれを行う最も賢い方法は何ですか? 既製のソリューションはありますか?

4

2 に答える 2

7

plistlibをチェックしてください。

于 2009-05-18T18:54:30.003 に答える
2

Mac を使用していると仮定すると、PyObjC を使用できます。

以下は、 Using Python For System Administrationのスライド 27からの plist からの読み取りの例です。

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 ~/testbashで実行すると、次のようになります。

{
    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 に答える