Spec-Zone.ru › Python 3.8

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

Spec-Zone.ru

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