Документация Python неофициальный перевод
Содержание страницы

13.6. plistlib – Generate and parse Mac OS X .plist files

Изменено в версии 2.6: Ранее этот модуль был доступен только в библиотеке для Mac, теперь он доступен для всех платформ.

Исходный код: Lib/plistlib.py


Этот модуль предоставляет интерфейс для чтения и записи XML-файлов «property list», используемых в основном в Mac OS X.

Формат файла property list (.plist) – это простой XML pickle, поддерживающий базовые типы объектов, такие как словари, списки, числа и строки. Обычно объект верхнего уровня является словарём.

Значения могут быть строками, целыми числами, числами с плавающей запятой, булевыми значениями, кортежами, списками, словарями (но только со строковыми ключами), Data или datetime.datetime объектами. Строковые значения (включая ключи словарей) могут быть Unicode-строками – они будут записаны в UTF-8.

Тип plist <data> поддерживается через класс Data. Это тонкая обёртка вокруг строки Python. Используйте Data, если строки содержат управляющие символы.

См. также

Страница руководства PList

Документация Apple по формату файлов.

Этот модуль определяет следующие функции:

plistlib.readPlist(pathOrFile)

Читает файл plist. pathOrFile может быть именем файла или файловым объектом, открытым для чтения. Возвращает распакованный корневой объект (обычно это словарь).

XML-данные разбираются с помощью парсера Expat из xml.parsers.expat – обратитесь к его документации за информацией о возможных исключениях при некорректном XML. Неизвестные элементы просто игнорируются парсером plist.

plistlib.writePlist(rootObject, pathOrFile)

Записывает rootObject в файл plist. pathOrFile может быть именем файла или файловым объектом, открытым для записи.

TypeError будет возбуждено, если объект имеет неподдерживаемый тип или является контейнером, содержащим объекты неподдерживаемых типов.

plistlib.readPlistFromString(data)

Читает plist из строки. Возвращает корневой объект.

plistlib.writePlistToString(rootObject)

Возвращает rootObject в виде строки в формате plist.

plistlib.readPlistFromResource(path, restype='plst', resid=0)

Читает plist из ресурса с типом restype из ресурсной ветви path. Доступно в Mac OS X.

Примечание

В Python 3.x эта функция была удалена.

plistlib.writePlistToResource(rootObject, path, restype='plst', resid=0)

Записывает rootObject как ресурс с типом restype в ресурсную ветвь path. Доступно в Mac OS X.

Примечание

В Python 3.x эта функция была удалена.

Доступен следующий класс:

class plistlib.Data(data)

Возвращает объект-обёртку «данные» вокруг строки data. Он используется в функциях преобразования из/в список свойств для представления типа <data>, доступного в списке свойств.

У него есть один атрибут data, который можно использовать для получения сохранённой в нём строки Python.

13.6.1. ПримерыExamples

Генерация plist:

pl = dict(
    aString="Doodah",
    aList=["A", "B", 12, 32.1, [1, 2, 3]],
    aFloat = 0.1,
    anInt = 728,
    aDict=dict(
        anotherString="<hello & hi there!>",
        aUnicodeValue=u'M\xe4ssig, Ma\xdf',
        aTrueValue=True,
        aFalseValue=False,
    ),
    someData = Data("<binary gunk>"),
    someMoreData = Data("<lots of binary gunk>" * 10),
    aDate = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())),
)
# ключи Unicode возможны, но не совсем удобны в использовании:
pl[u'\xc5benraa'] = "That was a unicode key."
writePlist(pl, fileName)

Разбор plist:

pl = readPlist(pathOrFile)
print pl["aKey"]