Spec-Zone.ru › Python 3.10

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)

Прочитать файл plist. fp должен быть объектом читаемого и двоичного файла. Возвращает распакованный корневой объект (обычно словарь).

fmt — формат файла, и следующие значения допустимы:

  • None: Автоматическое определение формата файла
  • FMT_XML: Формат файла XML
  • FMT_BINARY: Двоичный формат plist

dict_type — тип, используемый для словарей, которые считываются из файла plist.

XML-данные для формата FMT_XML парсятся с помощью парсера Expat из xml.parsers.expat — см. его документацию для возможных исключений при неправильном XML. Неизвестные элементы просто игнорируются парсером plist.

Парсер двоичного формата вызывает InvalidFileException при невозможности парсинга файла.

Новое в версии 3.4.

plistlib.loads(data, *, fmt=None, 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.

Доступны следующие классы:

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–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.10/library/plistlib.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API