Документация Python неофициальный перевод

plistlib.md

90 строк · 6.1 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.3/library/plistlib.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 14.5. [`plistlib`](https://python-all.ru/3.3/library/plistlib.html#module-plistlib) – Генерация и разбор файлов Mac OS X `.plist`89**Исходный код:** [Lib/plistlib.py](https://python-all.ru/src/3.3/Lib/plistlib.py)1011---1213Этот модуль предоставляет интерфейс для чтения и записи XML-файлов «property list», используемых в основном в Mac OS X.1415Формат файла property list (`.plist`) – это простой XML-сериализатор, поддерживающий базовые типы объектов, такие как словари, списки, числа и строки. Обычно объект верхнего уровня является словарём.1617Для записи и разбора plist-файла используйте функции [`writePlist()`](https://python-all.ru/3.3/library/plistlib.html#plistlib.writePlist) и [`readPlist()`](https://python-all.ru/3.3/library/plistlib.html#plistlib.readPlist).1819Для работы с данными plist в виде объектов bytes используйте [`writePlistToBytes()`](https://python-all.ru/3.3/library/plistlib.html#plistlib.writePlistToBytes) и [`readPlistFromBytes()`](https://python-all.ru/3.3/library/plistlib.html#plistlib.readPlistFromBytes).2021Значения могут быть строками, целыми числами, числами с плавающей запятой, булевыми значениями, кортежами, списками, словарями (только со строковыми ключами), объектами [`Data`](https://python-all.ru/3.3/library/plistlib.html#plistlib.Data) или [`datetime.datetime`](https://python-all.ru/3.3/library/datetime.html#datetime.datetime). Строковые значения (включая ключи словарей) должны быть строками Unicode – они будут записаны в UTF-8.2223Тип plist `<data>` поддерживается через класс [`Data`](https://python-all.ru/3.3/library/plistlib.html#plistlib.Data). Это тонкая обёртка вокруг объекта bytes в Python. Используйте [`Data`](https://python-all.ru/3.3/library/plistlib.html#plistlib.Data), если строки содержат управляющие символы.2425> **См. также**26>27> **[Страница руководства PList](https://python-all.ru/3.3/library/plistlib.html)**28>29> Документация Apple по формату файлов.3031Этот модуль определяет следующие функции:3233#### `plistlib.readPlist(pathOrFile)`3435Читает plist-файл. *pathOrFile* может быть именем файла или (доступным для чтения и двоичным) файловым объектом. Возвращает распакованный корневой объект (обычно это словарь).3637XML-данные разбираются с помощью синтаксического анализатора Expat из [`xml.parsers.expat`](https://python-all.ru/3.3/library/pyexpat.html#module-xml.parsers.expat) – обратитесь к его документации за сведениями о возможных исключениях при некорректном XML. Неизвестные элементы просто игнорируются анализатором plist.3839#### `plistlib.writePlist(rootObject, pathOrFile)`4041Записывает *rootObject* в plist-файл. *pathOrFile* может быть именем файла или (доступным для записи и двоичным) файловым объектом.4243Исключение [`TypeError`](https://python-all.ru/3.3/library/exceptions.html#TypeError) будет возбуждено, если объект имеет неподдерживаемый тип или является контейнером, содержащим объекты неподдерживаемых типов.4445#### `plistlib.readPlistFromBytes(data)`4647Читает plist-данные из объекта bytes. Возвращает корневой объект.4849#### `plistlib.writePlistToBytes(rootObject)`5051Возвращает *rootObject* в виде bytes-объекта в формате plist.5253Доступен следующий класс:5455#### `class plistlib.Data(data)`5657Возвращает объект-обёртку «data» вокруг байтового объекта *data*. Используется в функциях преобразования из plist-формата и обратно для представления типа `<data>`, доступного в plist-файлах.5859У него есть один атрибут `data`, который можно использовать для получения хранящегося в нём объекта bytes языка Python.6061## 14.5.1. Примеры6263Генерация plist:6465```python66pl = dict(67    aString = "Doodah",68    aList = ["A", "B", 12, 32.1, [1, 2, 3]],69    aFloat = 0.1,70    anInt = 728,71    aDict = dict(72        anotherString = "<hello & hi there!>",73        aThirdString = "M\xe4ssig, Ma\xdf",74        aTrueValue = True,75        aFalseValue = False,76    ),77    someData = Data(b"<binary gunk>"),78    someMoreData = Data(b"<lots of binary gunk>" * 10),79    aDate = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())),80)81writePlist(pl, fileName)82```8384Разбор plist:8586```python87pl = readPlist(pathOrFile)88print(pl["aKey"])89```90