plistlib — Генерация и разбор файлов Apple .plist
Исходный код: Lib/plistlib.py
Этот модуль предоставляет интерфейс для чтения и записи файлов «список свойств», используемых Apple, в основном на macOS и iOS. Этот модуль поддерживает как двоичные, так и XML-файлы plist.
Формат файла списка свойств (.plist) — это простая сериализация, поддерживающая базовые типы объектов, такие как словари, списки, числа и строки. Обычно верхним объектом является словарь.
Для записи и разбора файла plist используйте функции dump() и load().
Для работы с данными plist в объектах типа байты или строки используйте 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 из объекта байтов или строк. См.
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, если объект имеет недопустимый тип или контейнер, содержащий объекты недопустимых типов.Будет поднято
OverflowErrorдля целочисленных значений, которые не могут быть представлены в файлах plist (двоичном формате).Добавлена в версии 3.4.
Изменено в версии 3.13: Добавлен ключевой параметр aware_datetime.
-
-
plistlib.dumps(value, *, fmt=FMT_XML, sort_keys=True, skipkeys=False, aware_datetime=False) -
Возвращает value в формате plist в виде объекта типа байты. См. документацию для
dump()для объяснения ключевых аргументов этой функции.Добавлена в версии 3.4.
Доступны следующие классы:
-
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:
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–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/plistlib.html