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

plistlib.md

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

1> **Источник:** https://python-all.ru/3.1/library/plistlib.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 13.5. `plistlib` – Генерация и разбор Mac OS X `.plist` файлов89Этот модуль предоставляет интерфейс для чтения и записи XML-файлов «property list», используемых в основном в Mac OS X.1011Формат файла property list (`.plist`) – это простой XML-сериализатор, поддерживающий базовые типы объектов, такие как словари, списки, числа и строки. Обычно объект верхнего уровня является словарём.1213Для записи и разбора plist-файла используйте функции [`writePlist()`](https://python-all.ru/3.1/library/plistlib.html#plistlib.writePlist) и [`readPlist()`](https://python-all.ru/3.1/library/plistlib.html#plistlib.readPlist).1415Для работы с данными plist в виде объектов bytes используйте [`writePlistToBytes()`](https://python-all.ru/3.1/library/plistlib.html#plistlib.writePlistToBytes) и [`readPlistFromBytes()`](https://python-all.ru/3.1/library/plistlib.html#plistlib.readPlistFromBytes).1617Значения могут быть строками, целыми числами, числами с плавающей запятой, булевыми значениями, кортежами, списками, словарями (только со строковыми ключами), объектами [`Data`](https://python-all.ru/3.1/library/plistlib.html#plistlib.Data) или [`datetime.datetime`](https://python-all.ru/3.1/library/datetime.html#datetime.datetime). Строковые значения (включая ключи словарей) должны быть строками Unicode – они будут записаны в UTF-8.1819Тип plist `<data>` поддерживается через класс [`Data`](https://python-all.ru/3.1/library/plistlib.html#plistlib.Data). Это тонкая обёртка вокруг объекта bytes в Python. Используйте [`Data`](https://python-all.ru/3.1/library/plistlib.html#plistlib.Data), если строки содержат управляющие символы.2021> **См. также**22>23> **[Страница руководства PList](https://python-all.ru/3.1/library/plistlib.html)**24>25> Документация Apple по формату файлов.2627Этот модуль определяет следующие функции:2829#### `plistlib.readPlist(pathOrFile)`3031Читает файл plist. *pathOrFile* может быть именем файла или файловым объектом, открытым для чтения. Возвращает распакованный корневой объект (обычно это словарь).3233XML-данные разбираются с помощью синтаксического анализатора Expat из [`xml.parsers.expat`](https://python-all.ru/3.1/library/pyexpat.html#module-xml.parsers.expat) – обратитесь к его документации за сведениями о возможных исключениях при некорректном XML. Неизвестные элементы просто игнорируются анализатором plist.3435#### `plistlib.writePlist(rootObject, pathOrFile)`3637Записывает *rootObject* в файл plist. *pathOrFile* может быть именем файла или файловым объектом, открытым для записи.3839Исключение [`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError) будет возбуждено, если объект имеет неподдерживаемый тип или является контейнером, содержащим объекты неподдерживаемых типов.4041#### `plistlib.readPlistFromBytes(data)`4243Читает plist-данные из объекта bytes. Возвращает корневой объект.4445#### `plistlib.writePlistToBytes(rootObject)`4647Возвращает4849*rootObject*5051в виде bytes-объекта в формате plist.5253Доступен следующий класс:5455#### `class plistlib.Data(data)`5657Возвращает объект-обёртку «data» вокруг байтового объекта *data*. Используется в функциях преобразования из plist-формата и обратно для представления типа `<data>`, доступного в plist-файлах.5859У него есть один атрибут `data`, который можно использовать для получения хранящегося в нём объекта bytes языка Python.6061## 13.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