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

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

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


Этот модуль предоставляет интерфейс для чтения и записи 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.

14.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"])