plistlib — создание и разбор файлов Apple .plist
Исходный код: Lib/plistlib.py
Этот модуль предоставляет интерфейс для чтения и записи файлов «списков свойств», используемых Apple, главным образом в macOS и iOS. Модуль поддерживает файлы plist как в двоичном формате, так и в формате XML.
Формат файлов списков свойств (.plist) — это простой формат сериализации, поддерживающий основные типы объектов, такие как словари, списки, числа и строки. Обычно объект верхнего уровня — это словарь.
Для записи и разбора файла plist используйте функции dump() и load().
Для работы с данными plist в виде объектов bytes или string используйте dumps() и loads().
Значениями могут быть строки, целые числа, числа с плавающей точкой, логические значения, кортежи, списки, словари (но только со строковыми ключами), объекты bytes, bytearray или datetime.datetime.
Изменено в версии 3.4: Добавлен новый API, старый API объявлен устаревшим. Добавлена поддержка файлов plist в двоичном формате.
Изменено в версии 3.8: Добавлена поддержка чтения и записи токенов UID в двоичных файлах plist, используемых NSKeyedArchiver и NSKeyedUnarchiver.
Изменено в версии 3.9: Старый API удалён.
См. также
- Страница руководства по PList
-
Документация Apple по формату файлов.
В этом модуле определены следующие функции:
-
plistlib.load(fp, *, fmt=None, dict_type=dict, aware_datetime=False) -
Прочитать файл plist. fp должен быть доступным для чтения двоичным файловым объектом. Возвращает распакованный корневой объект (обычно словарь).
fmt — формат файла; допустимы следующие значения:
-
None: автоматически определить формат файла -
FMT_XML: формат файла XML -
FMT_BINARY: двоичный формат plist
dict_type — тип, используемый для словарей, считываемых из файла plist.
Если значение aware_datetime равно true, поля типа
datetime.datetimeбудут созданы как объекты с часовым поясом, гдеtzinfo— этоdatetime.UTC.Данные XML для формата
FMT_XMLразбираются парсером Expat изxml.parsers.expat— сведения о возможных исключениях при некорректном XML см. в его документации. Неизвестные элементы просто игнорируются парсером plist.Если файл не удаётся разобрать, парсер вызывает исключение
InvalidFileException.Добавлено в версии 3.4.
Изменено в версии 3.13: Добавлен параметр aware_datetime, доступный только по ключевому слову.
-
-
plistlib.loads(data, *, fmt=None, dict_type=dict, aware_datetime=False) -
Загрузить plist из объекта bytes или string. Описание именованных аргументов см. в
load().Добавлено в версии 3.4.
Изменено в версии 3.13: data может быть строкой, если fmt равен
FMT_XML.
-
plistlib.dump(value, fp, *, fmt=FMT_XML, sort_keys=True, skipkeys=False, aware_datetime=False) -
Записать value в файл plist. fp должен быть доступным для записи двоичным файловым объектом.
Аргумент fmt задаёт формат файла plist и может принимать одно из следующих значений:
-
FMT_XML: файл plist в формате XML -
FMT_BINARY: файл plist в двоичном формате
Если значение sort_keys равно true (по умолчанию), ключи словарей записываются в plist в отсортированном порядке; в противном случае они записываются в порядке обхода словаря.
Если значение skipkeys равно false (по умолчанию), функция вызывает исключение
TypeError, когда ключ словаря не является строкой; в противном случае такие ключи пропускаются.Если значение aware_datetime равно true и какое-либо поле типа
datetime.datetimeзадано как объект с часовым поясом, перед записью оно будет преобразовано в часовой пояс UTC.Если объект имеет неподдерживаемый тип или является контейнером, содержащим объекты неподдерживаемых типов, будет вызвано исключение
TypeError.Для целочисленных значений, которые нельзя представить в файлах plist (в двоичном формате), будет вызвано исключение
OverflowError.Добавлено в версии 3.4.
Изменено в версии 3.13: Добавлен параметр aware_datetime, доступный только по ключевому слову.
-
-
plistlib.dumps(value, *, fmt=FMT_XML, sort_keys=True, skipkeys=False, aware_datetime=False) -
Вернуть value в виде объекта bytes, отформатированного как plist. Описание именованных аргументов этой функции см. в документации к
dump().Добавлено в версии 3.4.
Доступны следующие классы:
-
class plistlib.UID(data) -
Обёртка для
int. Используется при чтении или записи данных в кодировке NSKeyedArchiver, содержащих UID (см. руководство по PList).-
data -
Целочисленное значение UID. Оно должно находиться в диапазоне
0 <= data < 2**64.
Добавлено в версии 3.8.
-
Доступны следующие константы:
-
plistlib.FMT_XML -
Формат XML для файлов plist.
Добавлено в версии 3.4.
-
plistlib.FMT_BINARY -
Двоичный формат для файлов plist
Добавлено в версии 3.4.
В модуле определены следующие исключения:
-
exception plistlib.InvalidFileException -
Вызывается, если файл не удаётся разобрать.
Добавлено в версии 3.4.
Примеры
Создание plist:
import datetime
import plistlib
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.now()
)
print(plistlib.dumps(pl).decode())
Разбор plist:
import plistlib
plist = b"""<plist version="1.0">
<dict>
<key>foo</key>
<string>bar</string>
</dict>
</plist>"""
pl = plistlib.loads(plist)
print(pl["foo"])
© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/plistlib.html