Сериализация объекта Python в XML (Apple .plist) - PullRequest
3 голосов
/ 18 мая 2009

Мне нужно прочитать и сериализовать объекты из и в XML, в частности, в формат Apple .plist. Какой самый умный способ сделать это в Python? Есть ли готовые решения?

Ответы [ 2 ]

7 голосов
/ 18 мая 2009

Выезд plistlib .

2 голосов
/ 11 августа 2009

Если вы работаете на 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

И пример написания к списку (который я написал):

#!/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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...