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.
См. также
- Страница справки 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 истинно (по умолчанию), двоичные данные будут возвращены как экземпляры
bytes, в противном случае они возвращаются как экземплярыData.dict_type — тип, используемый для словарей, которые считываются из файла plist. Точную структуру plist можно восстановить, используя
collections.OrderedDict(хотя порядок ключей не должен быть важен в файлах 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: Файл plist в формате XML -
FMT_BINARY: Файл plist в двоичном формате
Когда sort_keys истинно (по умолчанию), ключи для словарей записываются в файл plist в отсортированном порядке, в противном случае они записываются в порядке итерации словаря.
Когда skipkeys ложно (по умолчанию), функция поднимает
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для объяснения ключевых аргументов.Примечание
Значения словарей в результате имеют метод
__getattr__, который делегирует__getitem_. Это означает, что вы можете использовать доступ к атрибутам для доступа к элементам этих словарей.Устарело начиная с версии 3.4: Используйте
load()вместо этого.
-
plistlib.writePlist(rootObject, pathOrFile) -
Запись rootObject в файл XML plist. pathOrFile может быть либо именем файла, либо (записываемым и двоичным) объектом файла
Устарело начиная с версии 3.4: Используйте
dump()вместо этого.
-
plistlib.readPlistFromBytes(data) -
Чтение данных plist из объекта байтовой строки. Возвращает корневой объект.
См.
load()для описания ключевых аргументов.Примечание
Значения словарей в результате имеют метод
__getattr__, который делегирует__getitem_. Это означает, что вы можете использовать доступ к атрибутам для доступа к элементам этих словарей.Устарело начиная с версии 3.4: Используйте
loads()вместо этого.
-
plistlib.writePlistToBytes(rootObject) -
Возвращает rootObject в виде объекта байтовой строки в формате XML plist.
Устарело начиная с версии 3.4: Используйте
dumps()вместо этого.
Доступны следующие классы:
-
Dict([dict]): -
Возвращает расширенный объект отображения со значением, равным словарю dict.
Этот класс является подклассом
dict, где доступ к атрибутам может использоваться для доступа к элементам. То есть,aDict.keyэквивалентноaDict['key']для получения, установки и удаления элементов в отображении.Устарел начиная с версии 3.0.
-
class plistlib.Data(data) -
Возвращает объект-обёртку «данные» вокруг объекта байтовой строки data. Это используется в функциях преобразования из/в plist для представления типа
<data>доступного в plist.Он имеет один атрибут,
data, который можно использовать для извлечения хранящегося в нём объекта Python байтовой строки.Устарел начиная с версии 3.4: Используйте объект
bytesвместо этого.
Доступны следующие константы:
-
plistlib.FMT_XML -
Формат XML для файлов plist.
Добавлена в версии 3.4.
-
plistlib.FMT_BINARY -
Двоичный формат для файлов plist
Добавлена в версии 3.4.
14.5.1. Примеры
Генерация файла 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–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.6/library/plistlib.html