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

13.5. plistlib – Генерация и разбор Mac OS X .plist файловplistlib – Generate and parse Mac OS X .plist files

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

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

Для записи и разбора plist-файла используйте функции writePlist() и readPlist().

Для работы с данными plist в виде объектов bytes используйте writePlistToBytes() и readPlistFromBytes().

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

Тип plist <data> поддерживается через класс Data. Это тонкая обёртка вокруг объекта bytes в 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.readPlistFromBytes(data)
Читает plist-данные из объекта bytes. Возвращает корневой объект.
plistlib.writePlistToBytes(rootObject)
Возвращает rootObject в виде bytes-объекта в формате plist.

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

class plistlib.Data(data)

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

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

13.5.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!>",
        aThirdString = "M\xe4ssig, Ma\xdf",
        aTrueValue = True,
        aFalseValue = False,
    ),
    someData = Data(b"<binary gunk>"),
    someMoreData = Data(b"<lots of binary gunk>" * 10),
    aDate = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())),
)
writePlist(pl, fileName)

Разбор plist:

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