tomllib.md
1> **Источник:** https://python-all.ru/3/library/tomllib.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `tomllib` – Разбор TOML-файлов89Добавлено в версии 3.12.1011**Исходный код:** [Lib/tomllib](https://python-all.ru/3/library/tomllib.html)1213---1415Этот модуль предоставляет интерфейс для разбора TOML 1.0.0 (Tom’s Obvious Minimal Language, [https://toml.io](https://python-all.ru/3/library/tomllib.html)). Запись TOML не поддерживается.1617> **Предупреждение**18>19> Соблюдайте осторожность при разборе данных из ненадёжных источников. Вредоносная строка TOML может заставить декодер потреблять значительные ресурсы ЦП и памяти. Рекомендуется ограничивать размер разбираемых данных.2021> **См. также**22>23> Пакет [Tomli-W](https://python-all.ru/3/library/tomllib.html) является средством записи TOML, которое можно использовать вместе с этим модулем; оно предоставляет API записи, знакомый пользователям модулей [`marshal`](https://python-all.ru/3/library/marshal.html#module-marshal) и [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle) стандартной библиотеки.2425> **См. также**26>27> Пакет [TOML Kit](https://python-all.ru/3/library/tomllib.html) – это библиотека TOML, сохраняющая стиль, с возможностью как чтения, так и записи. Он является рекомендуемой заменой этого модуля для редактирования уже существующих TOML-файлов.2829Этот модуль определяет следующие функции:3031#### `tomllib.load(fp, /, *, parse_float=float)`3233Читает TOML-файл. Первым аргументом должен быть читаемый двоичный файловый объект. Возвращает [`dict`](https://python-all.ru/3/library/stdtypes.html#dict). Преобразует типы TOML в Python согласно этой [таблице соответствия](https://python-all.ru/3/library/tomllib.html#toml-to-py-table).3435Функция *parse\_float* будет вызвана для строки каждого разбираемого значения TOML с плавающей запятой. По умолчанию она эквивалентна `float(num_str)`. Это позволяет использовать другой тип данных или анализатор для чисел с плавающей запятой TOML (например, [`decimal.Decimal`](https://python-all.ru/3/library/decimal.html#decimal.Decimal)). Вызываемый объект не должен возвращать [`dict`](https://python-all.ru/3/library/stdtypes.html#dict) или [`list`](https://python-all.ru/3/library/stdtypes.html#list), иначе будет возбуждено исключение [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError).3637Исключение [`TOMLDecodeError`](https://python-all.ru/3/library/tomllib.html#tomllib.TOMLDecodeError) будет возбуждено при недопустимом документе TOML.3839#### `tomllib.loads(s, /, *, parse_float=float)`4041Загружает TOML из объекта [`str`](https://python-all.ru/3/library/stdtypes.html#str). Возвращает [`dict`](https://python-all.ru/3/library/stdtypes.html#dict). Преобразует типы TOML в Python согласно этой [таблице соответствия](https://python-all.ru/3/library/tomllib.html#toml-to-py-table). Аргумент *parse\_float* имеет то же значение, что и в [`load()`](https://python-all.ru/3/library/tomllib.html#tomllib.load).4243Исключение [`TOMLDecodeError`](https://python-all.ru/3/library/tomllib.html#tomllib.TOMLDecodeError) будет возбуждено при недопустимом документе TOML.4445Доступны следующие исключения:4647#### `exception tomllib.TOMLDecodeError(msg, doc, pos)`4849Подкласс [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) со следующими дополнительными атрибутами:5051#### `msg`5253Неформатированное сообщение об ошибке.5455#### `doc`5657Разбираемый документ TOML.5859#### `pos`6061Индекс в *doc*, на котором произошла ошибка разбора.6263#### `lineno`6465Строка, соответствующая *pos*.6667#### `colno`6869Столбец, соответствующий *pos*.7071Изменено в версии 3.14: Добавлены параметры *msg*, *doc* и *pos*. Добавлены атрибуты [`msg`](https://python-all.ru/3/library/tomllib.html#tomllib.TOMLDecodeError.msg), [`doc`](https://python-all.ru/3/library/tomllib.html#tomllib.TOMLDecodeError.doc), [`pos`](https://python-all.ru/3/library/tomllib.html#tomllib.TOMLDecodeError.pos), [`lineno`](https://python-all.ru/3/library/tomllib.html#tomllib.TOMLDecodeError.lineno) и [`colno`](https://python-all.ru/3/library/tomllib.html#tomllib.TOMLDecodeError.colno).7273Устарело с версии 3.14: Передача произвольных позиционных аргументов устарела.7475## Примеры7677Разбор TOML-файла:7879```python80import tomllib8182with open("pyproject.toml", "rb") as f:83 data = tomllib.load(f)84```8586Разбор строки TOML:8788```python89import tomllib9091toml_str = """92python-version = "3.11.0"93python-implementation = "CPython"94"""9596data = tomllib.loads(toml_str)97```9899## Таблица соответствия100101| TOML | Python |102| --- | --- |103| Документ TOML | dict |104| строка | str |105| целое число | int |106| float | float (настраивается с помощью *parse\_float*) |107| булевый | bool |108| дата-время со смещением | datetime.datetime (атрибут `tzinfo` установлен в экземпляр `datetime.timezone`) |109| локальная дата-время | datetime.datetime (атрибут `tzinfo` установлен в `None`) |110| локальная дата | datetime.date |111| локальное время | datetime.time |112| массив | list |113| таблица | dict |114| встроенная таблица | dict |115| массив таблиц | список словарей |116