plistlib.md
1> **Источник:** https://python-all.ru/3.0/library/plistlib.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `plistlib` – Генерация и разбор `.plist`-файлов Mac OS X89Этот модуль предоставляет интерфейс для чтения и записи XML-файлов «property list», используемых в основном в Mac OS X.1011Формат файла property list (`.plist`) – это простой XML-сериализатор, поддерживающий базовые типы объектов, такие как словари, списки, числа и строки. Обычно объект верхнего уровня является словарём.1213Значениями могут быть строки, целые числа, числа с плавающей точкой, булевы значения, кортежи, списки, словари (но только со строковыми ключами), объекты [`Data`](https://python-all.ru/3.0/library/plistlib.html#plistlib.Data) или [`datetime.datetime`](https://python-all.ru/3.0/library/datetime.html#datetime.datetime). Строковые значения (включая ключи словаря) могут быть строками Unicode – они будут записаны в кодировке UTF-8.1415Тип plist `<data>` поддерживается через класс [`Data`](https://python-all.ru/3.0/library/plistlib.html#plistlib.Data). Это тонкая обёртка вокруг строки Python. Используйте [`Data`](https://python-all.ru/3.0/library/plistlib.html#plistlib.Data), если ваши строки содержат управляющие символы.1617> **См. также**18>19> ***Справочная страница PList \<http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/plist.5.html\>***20>21> Документация Apple по формату файлов.2223Этот модуль определяет следующие функции:2425#### `[plistlib.readPlist]plistlib.readPlist(pathOrFile)`2627Читает файл plist. *pathOrFile* может быть именем файла или файловым объектом, открытым для чтения. Возвращает распакованный корневой объект (обычно это словарь).2829XML-данные разбираются с помощью синтаксического анализатора Expat из [`xml.parsers.expat`](https://python-all.ru/3.0/library/pyexpat.html#module-xml.parsers.expat) – обратитесь к его документации за сведениями о возможных исключениях при некорректном XML. Неизвестные элементы просто игнорируются анализатором plist.3031#### `[plistlib.writePlist]plistlib.writePlist(rootObject, pathOrFile)`3233Записывает *rootObject* в файл plist. *pathOrFile* может быть именем файла или файловым объектом, открытым для записи.3435Исключение [`TypeError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.TypeError) будет возбуждено, если объект имеет неподдерживаемый тип или является контейнером, содержащим объекты неподдерживаемых типов.3637#### `[plistlib.readPlistFromString]plistlib.readPlistFromString(data)`3839Читает plist из строки. Возвращает корневой объект.4041#### `[plistlib.writePlistToString]plistlib.writePlistToString(rootObject)`4243Возвращает4445*rootObject*4647в виде строки в формате plist.4849Доступен следующий класс:5051#### `[plistlib.Data]class plistlib.Data(data)`5253Возвращает объект-обёртку «data» вокруг строки *data*. Используется в функциях преобразования из plist и в plist для представления типа `<data>`, доступного в plist-файлах.5455Имеет один атрибут `data`, который можно использовать для получения хранящейся в нём строки Python.5657## Примеры5859Генерация plist:6061```python62pl = dict(63 aString="Doodah",64 aList=["A", "B", 12, 32.1, [1, 2, 3]],65 aFloat = 0.1,66 anInt = 728,67 aDict=dict(68 anotherString="<hello & hi there!>",69 aUnicodeValue=u'M\xe4ssig, Ma\xdf',70 aTrueValue=True,71 aFalseValue=False,72 ),73 someData = Data("<binary gunk>"),74 someMoreData = Data("<lots of binary gunk>" * 10),75 aDate = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())),76)77# ключи Unicode возможны, но не совсем удобны в использовании:78pl[u'\xc5benraa'] = "That was a unicode key."79writePlist(pl, fileName)80```8182Разбор plist:8384```python85pl = readPlist(pathOrFile)86print(pl["aKey"])87```88