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

tomllib.md

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

1> **Источник:** https://python-all.ru/3.15/library/tomllib.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `tomllib` – Разбор TOML-файлов89**Исходный код:** [Lib/tomllib](https://python-all.ru/3.15/library/tomllib.html)1011---1213Этот модуль предоставляет интерфейс для разбора TOML 1.1.0 (Tom’s Obvious Minimal Language, [https://toml.io](https://python-all.ru/3.15/library/tomllib.html)). Этот модуль не поддерживает запись TOML.1415Добавлено в версии 3.11: Модуль добавлен с поддержкой TOML 1.0.0.1617Изменено в версии 3.15: Добавлена поддержка TOML 1.1.0. Подробнее см. в [What’s New](https://python-all.ru/3.15/whatsnew/3.15.html#whatsnew315-tomllib-1-1-0).1819> **Предупреждение**20>21> Соблюдайте осторожность при разборе данных из ненадёжных источников. Вредоносная строка TOML может заставить декодер потреблять значительные ресурсы ЦП и памяти. Рекомендуется ограничивать размер разбираемых данных.2223> **См. также**24>25> Пакет [Tomli-W](https://python-all.ru/3.15/library/tomllib.html) является средством записи TOML, которое можно использовать вместе с этим модулем; оно предоставляет API записи, знакомый пользователям модулей [`marshal`](https://python-all.ru/3.15/library/marshal.html#module-marshal) и [`pickle`](https://python-all.ru/3.15/library/pickle.html#module-pickle) стандартной библиотеки.2627> **См. также**28>29> Пакет [TOML Kit](https://python-all.ru/3.15/library/tomllib.html) – это библиотека TOML, сохраняющая стиль, с возможностью как чтения, так и записи. Он является рекомендуемой заменой этого модуля для редактирования уже существующих TOML-файлов.3031Этот модуль определяет следующие функции:3233#### `tomllib.load(fp, /, *, parse_float=float)`3435Читает TOML-файл. Первым аргументом должен быть читаемый двоичный файловый объект. Возвращает [`dict`](https://python-all.ru/3.15/library/stdtypes.html#dict). Преобразует типы TOML в Python согласно этой [таблице соответствия](https://python-all.ru/3.15/library/tomllib.html#toml-to-py-table).3637Функция *parse\_float* будет вызвана для строки каждого разбираемого значения TOML с плавающей запятой. По умолчанию она эквивалентна `float(num_str)`. Это позволяет использовать другой тип данных или анализатор для чисел с плавающей запятой TOML (например, [`decimal.Decimal`](https://python-all.ru/3.15/library/decimal.html#decimal.Decimal)). Вызываемый объект не должен возвращать [`dict`](https://python-all.ru/3.15/library/stdtypes.html#dict) или [`list`](https://python-all.ru/3.15/library/stdtypes.html#list), иначе будет возбуждено исключение [`ValueError`](https://python-all.ru/3.15/library/exceptions.html#ValueError).3839Исключение [`TOMLDecodeError`](https://python-all.ru/3.15/library/tomllib.html#tomllib.TOMLDecodeError) будет возбуждено при недопустимом документе TOML.4041#### `tomllib.loads(s, /, *, parse_float=float)`4243Загружает TOML из объекта [`str`](https://python-all.ru/3.15/library/stdtypes.html#str). Возвращает [`dict`](https://python-all.ru/3.15/library/stdtypes.html#dict). Преобразует типы TOML в Python согласно этой [таблице соответствия](https://python-all.ru/3.15/library/tomllib.html#toml-to-py-table). Аргумент *parse\_float* имеет то же значение, что и в [`load()`](https://python-all.ru/3.15/library/tomllib.html#tomllib.load).4445Исключение [`TOMLDecodeError`](https://python-all.ru/3.15/library/tomllib.html#tomllib.TOMLDecodeError) будет возбуждено при недопустимом документе TOML.4647Доступны следующие исключения:4849#### `exception tomllib.TOMLDecodeError(msg, doc, pos)`5051Подкласс [`ValueError`](https://python-all.ru/3.15/library/exceptions.html#ValueError) со следующими дополнительными атрибутами:5253#### `msg`5455Неформатированное сообщение об ошибке.5657#### `doc`5859Разбираемый документ TOML.6061#### `pos`6263Индекс в *doc*, на котором произошла ошибка разбора.6465#### `lineno`6667Строка, соответствующая *pos*.6869#### `colno`7071Столбец, соответствующий *pos*.7273Изменено в версии 3.14: Добавлены параметры *msg*, *doc* и *pos*. Добавлены атрибуты [`msg`](https://python-all.ru/3.15/library/tomllib.html#tomllib.TOMLDecodeError.msg), [`doc`](https://python-all.ru/3.15/library/tomllib.html#tomllib.TOMLDecodeError.doc), [`pos`](https://python-all.ru/3.15/library/tomllib.html#tomllib.TOMLDecodeError.pos), [`lineno`](https://python-all.ru/3.15/library/tomllib.html#tomllib.TOMLDecodeError.lineno) и [`colno`](https://python-all.ru/3.15/library/tomllib.html#tomllib.TOMLDecodeError.colno).7475Устарело с версии 3.14: Передача произвольных позиционных аргументов устарела.7677## Примеры7879Разбор TOML-файла:8081```python82import tomllib8384with open("pyproject.toml", "rb") as f:85    data = tomllib.load(f)86```8788Разбор строки TOML:8990```python91import tomllib9293toml_str = """94python-version = "3.11.0"95python-implementation = "CPython"96"""9798data = tomllib.loads(toml_str)99```100101## Таблица соответствия102103| TOML | Python |104| --- | --- |105| Документ TOML | dict |106| строка | str |107| целое число | int |108| float | float (настраивается с помощью *parse\_float*) |109| булевый | bool |110| дата-время со смещением | datetime.datetime (атрибут `tzinfo` установлен в экземпляр `datetime.timezone`) |111| локальная дата-время | datetime.datetime (атрибут `tzinfo` установлен в `None`) |112| локальная дата | datetime.date |113| локальное время | datetime.time |114| массив | list |115| таблица | dict |116| встроенная таблица | dict |117| массив таблиц | список словарей |118