Spec-Zone.ru › Python 3.13

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

Spec-Zone.ru

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