plistlib
— Генерация и анализ файлов Apple .plist
¶
Kod źródłowy: Lib/plistlib.py
Цей модуль надає інтерфейс для читання та запису файлів „списку властивостей”, які використовуються Apple, переважно в macOS та iOS. Цей модуль підтримує двійкові та XML-файли plist.
Формат файлу списку властивостей (.plist
) — це проста серіалізація, яка підтримує базові типи об’єктів, як-от словники, списки, числа та рядки. Зазвичай об’єктом верхнього рівня є словник.
Щоб вивести та проаналізувати файл plist, використовуйте функції dump()
і load()
.
Для работы с данными plist в байтах или строковых объектах используйте dumps()
и loads()
.
Значеннями можуть бути рядки, цілі числа, числа з плаваючою точкою, логічні значення, кортежі, списки, словники (але лише з рядковими ключами), об’єкти bytes
, bytearray
або datetime.datetime
.
Zmienione w wersji 3.4: Новий API, старий API застарів. Додано підтримку бінарних форматів plists.
Zmienione w wersji 3.8: Додано підтримку для читання та запису токенів UID
у бінарних списках, що використовуються NSKeyedArchiver і NSKeyedUnarchiver.
Zmienione w wersji 3.9: Старий API видалено.
Zobacz także
- Страница руководства PList
Документація Apple про формат файлу.
Цей модуль визначає такі функції:
- plistlib.load(fp, *, fmt=None, dict_type=dict, aware_datetime=False)¶
Прочитайте файл plist. fp має бути читабельним і двійковим файловим об’єктом. Повертає розпакований кореневий об’єкт (який зазвичай є словником).
fmt — це формат файлу, і такі значення є дійсними:
None
: Автоматичне визначення формату файлуFMT_XML
: формат файлу XMLFMT_BINARY
: двійковий формат plist
dict_type — це тип, який використовується для словників, які читаються з файлу plist.
Quando aware_datetime for verdadeiro, campos com o tipo
datetime.datetime
serão criados como objeto conscientes, comtzinfo
comodatetime.UTC
.XML-дані для формату
FMT_XML
аналізуються за допомогою синтаксичного аналізатора Expat ізxml.parsers.expat
— перегляньте його документацію щодо можливих винятків щодо неправильно сформованого XML. Невідомі елементи просто ігноруватимуться аналізатором plist.O analisador sintático levanta
InvalidFileException
quando o arquivo não pode ser analisado.Dodane w wersji 3.4.
Zmienione w wersji 3.13: Добавлен параметр только для ключевых слов aware_datetime.
- plistlib.loads(data, *, fmt=None, dict_type=dict, aware_datetime=False)¶
Загрузите plist из байтового или строкового объекта. См.
load()
для объяснения аргументов ключевого слова.Dodane w wersji 3.4.
Zmienione w wersji 3.13: data может быть строкой, если fmt равно
FMT_XML
.
- plistlib.dump(value, fp, *, fmt=FMT_XML, sort_keys=True, skipkeys=False, aware_datetime=False)¶
Escreve value em um arquivo plist. fp deve ser um objeto arquivo binário gravável.
Аргумент fmt визначає формат файлу plist і може бути одним із таких значень:
FMT_XML
: Plist-файл у форматі XMLFMT_BINARY
: файл plist у двійковому форматі
Якщо sort_keys має значення true (за замовчуванням), ключі для словників будуть записані до plist у відсортованому порядку, інакше вони будуть записані в порядку ітерацій словника.
Якщо skipkeys має значення false (за замовчуванням), функція викликає
TypeError
, коли ключ словника не є рядком, інакше такі ключі пропускаються.Когда aware_datetime имеет значение true и любое поле с типом
datetime.datetime
установлено как aware object, перед его записью оно преобразуется в часовой пояс UTC.Якщо тип об’єкта не підтримується або контейнер містить об’єкти непідтримуваних типів, виникне
TypeError
.Помилка
OverflowError
буде викликана для цілих значень, які не можуть бути представлені в (бінарних) файлах plist.Dodane w wersji 3.4.
Zmienione w wersji 3.13: Добавлен параметр только для ключевых слов aware_datetime.
- plistlib.dumps(value, *, fmt=FMT_XML, sort_keys=True, skipkeys=False, aware_datetime=False)¶
Повертає значення як об’єкт bytes у форматі plist. Перегляньте документацію для
dump()
для пояснення ключових аргументів цієї функції.Dodane w wersji 3.4.
Доступні такі класи:
- class plistlib.UID(data)¶
Обгортає
int
. Це використовується під час читання або запису даних, закодованих NSKeyedArchiver, які містять UID (див. посібник PList).- data¶
Valor inteiro do UID. Deve estar no intervalo
0 <= data < 2**64
.
Dodane w wersji 3.8.
Доступні такі константи:
- plistlib.FMT_XML¶
Формат XML для файлів plist.
Dodane w wersji 3.4.
- plistlib.FMT_BINARY¶
Двійковий формат для файлів plist
Dodane w wersji 3.4.
O módulo define as seguintes exceções:
- exception plistlib.InvalidFileException¶
Levantada quando um arquivo não puder ser analisado.
Dodane w wersji 3.4.
Przykłady¶
Створення 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"])