plistlib — Генерация и парсинг файлов Mac OS X .plist
Исходный код: Lib/plistlib.py
Этот модуль предоставляет интерфейс для чтения и записи файлов «список свойств», используемых в основном Mac OS X, и поддерживает как двоичные, так и XML-файлы plist.
Формат файла списка свойств (.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 — это формат файла, и следующие значения допустимы:
-
None: Автоопределение формата файла -
FMT_XML: Формат XML-файла -
FMT_BINARY: Двоичный формат plist
Если 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 в файл plist. Fp должен быть записываемым двоичным объектом файла.
Аргумент fmt задает формат файла plist и может принимать одно из следующих значений:
-
FMT_XML: XML-форматированный файл plist -
FMT_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 как объект байтов в формате plist. См. документацию для
dump()для объяснения ключевых аргументов этой функции.Добавлена в версии 3.4.
Следующие функции устарели:
-
plistlib.readPlist(pathOrFile) -
Чтение файла plist. pathOrFile может быть либо именем файла, либо (читаемым и двоичным) объектом файла. Возвращает распакованный корневой объект (который обычно является словарем).
Эта функция вызывает
load()для выполнения фактической работы, см. документациюthat functionдля объяснения ключевых аргументов.Устарело начиная с версии 3.4: Используйте
load()вместо этого.Изменено в версии 3.7: Значения словарей в результате теперь являются обычными словарями. Вы больше не можете использовать доступ по атрибутам для доступа к элементам этих словарей.
-
plistlib.writePlist(rootObject, pathOrFile) -
Запись rootObject в файл XML plist. pathOrFile может быть либо именем файла, либо (записываемым и двоичным) объектом файла
Устарело начиная с версии 3.4: Используйте
dump()вместо этого.
-
plistlib.readPlistFromBytes(data) -
Чтение данных plist из объекта байтов. Возвращает корневой объект.
См.
load()для описания ключевых аргументов.Устарело начиная с версии 3.4: Используйте
loads()вместо этого.Изменено в версии 3.7: Значения словарей в результате теперь являются обычными словарями. Вы больше не можете использовать доступ по атрибутам для доступа к элементам этих словарей.
-
plistlib.writePlistToBytes(rootObject) -
Возвращает rootObject в виде объекта байтов в формате XML plist.
Устарело начиная с версии 3.4: Используйте
dumps()вместо этого.
Доступны следующие классы:
-
class plistlib.Data(data) -
Возвращает объект-обёртку «данные» вокруг объекта байтов data. Это используется в функциях преобразования из/в plist для представления типа
<data>, доступного в plist.У него есть один атрибут,
data, который может быть использован для извлечения хранящегося в нём объекта Python bytes.Устарело начиная с версии 3.4: Используйте объект
bytesвместо этого.
-
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"])
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/plistlib.html