plistlib
— Создание и парсинг файлов Mac OS .plist
¶
Исходный код: Lib/plistlib.py
Модуль предоставляет интерфейс для чтения и записи файлов «списка свойств», используемых в основном Mac OS X и поддерживающие как бинарные, так и XML-файлы.
Формат файла списка свойств (.plist
) представляет собой простую
сериализацию, поддерживающую базовые типы объектов, такие как словари, списки,
числа и строки. Обычно объект верхнего уровня является словарем.
Для записи и синтаксического анализа файла plist используйте функции
dump()
и load()
.
Для работы с данными plist в байтах объектов используйте dumps()
и
loads()
.
Значениями могут быть строки, целые числа, числа с плавающей точкой, були, кортежи,
списки, словари (но только с ключами строка), Data
, bytes
,
bytesarray
или datetime.datetime
объекты.
Изменено в версии 3.4: Новый API, старый API устарел. Добавлена поддержка бинарных plist форматов.
Изменено в версии 3.8: Добавлена поддержка чтения и записи маркеров UID
в двоичных plist, как
используемый NSKeyedArchiver и NSKeyedUnarchiver.
См.также
- PList страница справочника
- Документация Apple по формату файлов.
Модуль определяет следующие функции:
-
plistlib.
load
(fp, *, fmt=None, use_builtin_types=True, dict_type=dict)¶ Прочитать файл plist. fp должен быть читаемым и двоичным файловым объектом. Возвращает распакованный корневой объект (который обычно является словарем).
fmt - формат файла, и следующие значения - valid:
None
: автообнаружение формата файлаFMT_XML
: формат файла XMLFMT_BINARY
: двоичный формат списка
Если use_builtin_types будет true (по умолчанию), то двоичные данные будут возвращенный как сущности
bytes
, иначе это - возвращенный как сущностиData
.dict_type - это тип используемый для словарей, считываемых из файла plist.
XML-данные для формата
FMT_XML
разобраны, используя Expat парсер изxml.parsers.expat
- видят его документацию для возможных исключений на плохо сформированном XML. Неизвестные элементы будут просто игнорироваться plist парсер.Парсер для двоичного формата вызывает
InvalidFileException
, когда файл не может быть проанализирован.Добавлено в версии 3.4.
-
plistlib.
loads
(data, *, fmt=None, use_builtin_types=True, dict_type=dict)¶ Загрузка plist из объекта в байтах. Объяснение аргументов
load()
см. в ключевых аргументах.Добавлено в версии 3.4.
-
plistlib.
dump
(value, fp, *, fmt=FMT_XML, sort_keys=True, skipkeys=False)¶ Запись value в файл списка. Fp должен быть объектом двоичного файла с возможностью записи.
Аргумент fmt определяет формат plist файла и может быть одним из следующих значения:
FMT_XML
: файл списка в формате XMLFMT_BINARY
: двоичный файл plist
Когда sort_keys будет true (по умолчанию), ключи для словарей будут написаны plist в сортированном заказе, иначе они будут написаны в итеративном заказе словаря.
Когда skipkeys false (по умолчанию), функция поднимает
TypeError
, когда ключ словаря не строка, иначе такие ключи пропущены.TypeError
будет поднят, если объект будет иметь неподдержанный тип или контейнер, который содержит объекты неподдержанных типов.OverflowError
будет поднят для целочисленного значения, который не может быть представлен в (наборе из двух предметов) plist файлы.Добавлено в версии 3.4.
-
plistlib.
dumps
(value, *, fmt=FMT_XML, sort_keys=True, skipkeys=False)¶ Возвращает value как объект байтов в формате списка. См. документацию для
dump()
для объяснения ключевых аргументов этой функции.Добавлено в версии 3.4.
Следующие функции устарели:
-
plistlib.
readPlist
(pathOrFile)¶ Прочитать файл plist. pathOrFile может быть именем файла или (читаемым и двоичным) объектом файла. Возвращает распакованный корневой объект (который обычно является словарем).
Эта функция вызывает
load()
для выполнения фактической работы, см. документациюthat function
для объяснения ключевых аргументов.Не рекомендуется, начиная с версии 3.4: Use
load()
instead.Изменено в версии 3.7: Dict значения в результате теперь нормальные словари. Вы больше не можете использовать атрибут доступ для доступа к элементам этих словарей.
-
plistlib.
writePlist
(rootObject, pathOrFile)¶ Запись rootObject в XML-файл списка. pathOrFile может быть именем файла или (доступным для записи и двоичным) объектом файла
Не рекомендуется, начиная с версии 3.4: Use
dump()
instead.
-
plistlib.
readPlistFromBytes
(data)¶ Чтение данных plist из объекта в байтах. Возвращает корневого объекта.
Описание аргументов
load()
см. в разделе ключевой.Не рекомендуется, начиная с версии 3.4: Use
loads()
instead.Изменено в версии 3.7: Dict значения в результате теперь нормальные словари. Вы больше не можете использовать атрибут доступ для доступа к элементам этих словарей.
-
plistlib.
writePlistToBytes
(rootObject)¶ Возвращает rootObject как объект байтов в формате XML plist.
Не рекомендуется, начиная с версии 3.4: Use
dumps()
instead.
Доступны следующие классы:
-
class
plistlib.
Data
(data)¶ Возвращает объект-оболочку «data» вокруг байтового объекта data. Это используемый в функциях преобразования из/в списки для представления типа
<data>
, доступных в списках.У этого есть один атрибут,
data
, который может быть используемый, чтобы восстановить объект байтов Python, хранивший в нем.Не рекомендуется, начиная с версии 3.4: Use a
bytes
object instead.
-
class
plistlib.
UID
(data)¶ Оборачивает
int
. Это - используемый, читая или сочиняя данные NSKeyedArchiver кодированный, которые содержат UID (см. руководство PList).У этого есть один атрибут,
data
, который может быть используемый, чтобы восстановить международный значение UID.data
должен находиться в диапазоне «0 <= data < 2 ** 64».Добавлено в версии 3.8.
Доступны следующие константы:
-
plistlib.
FMT_XML
¶ Формат XML для файлов plist.
Добавлено в версии 3.4.
-
plistlib.
FMT_BINARY
¶ Двоичный формат для файлов plist.
Добавлено в версии 3.4.
Примеры¶
Создание 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 = b"<binary gunk>",
someMoreData = b"<lots of binary gunk>" * 10,
aDate = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())),
)
with open(fileName, 'wb') as fp:
dump(pl, fp)
Разбор plist:
with open(fileName, 'rb') as fp:
pl = load(fp)
print(pl["aKey"])