tomllib.md
1> **Источник:** https://python-all.ru/3.13/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.13/library/tomllib.html)1213---1415Этот модуль предоставляет интерфейс для разбора TOML 1.0.0 (Tom’s Obvious Minimal Language, [https://toml.io](https://python-all.ru/3.13/library/tomllib.html)). Запись TOML не поддерживается.1617> **Предупреждение**18>19> Соблюдайте осторожность при разборе данных из ненадёжных источников. Вредоносная строка TOML может заставить декодер потреблять значительные ресурсы ЦП и памяти. Рекомендуется ограничивать размер разбираемых данных.2021> **См. также**22>23> Пакет [Tomli-W](https://python-all.ru/3.13/library/tomllib.html) является средством записи TOML, которое можно использовать вместе с этим модулем; оно предоставляет API записи, знакомый пользователям модулей [`marshal`](https://python-all.ru/3.13/library/marshal.html#module-marshal) и [`pickle`](https://python-all.ru/3.13/library/pickle.html#module-pickle) стандартной библиотеки.2425> **См. также**26>27> Пакет [TOML Kit](https://python-all.ru/3.13/library/tomllib.html) – это библиотека TOML, сохраняющая стиль, с возможностью как чтения, так и записи. Он является рекомендуемой заменой этого модуля для редактирования уже существующих TOML-файлов.2829Этот модуль определяет следующие функции:3031#### `tomllib.load(fp, /, *, parse_float=float)`3233Читает TOML-файл. Первым аргументом должен быть читаемый двоичный файловый объект. Возвращает [`dict`](https://python-all.ru/3.13/library/stdtypes.html#dict). Преобразует типы TOML в Python согласно этой [таблице соответствия](https://python-all.ru/3.13/library/tomllib.html#toml-to-py-table).3435Функция *parse\_float* будет вызвана для строки каждого разбираемого значения TOML с плавающей запятой. По умолчанию она эквивалентна `float(num_str)`. Это позволяет использовать другой тип данных или анализатор для чисел с плавающей запятой TOML (например, [`decimal.Decimal`](https://python-all.ru/3.13/library/decimal.html#decimal.Decimal)). Вызываемый объект не должен возвращать [`dict`](https://python-all.ru/3.13/library/stdtypes.html#dict) или [`list`](https://python-all.ru/3.13/library/stdtypes.html#list), иначе будет возбуждено исключение [`ValueError`](https://python-all.ru/3.13/library/exceptions.html#ValueError).3637Исключение [`TOMLDecodeError`](https://python-all.ru/3.13/library/tomllib.html#tomllib.TOMLDecodeError) будет возбуждено при недопустимом документе TOML.3839#### `tomllib.loads(s, /, *, parse_float=float)`4041Загружает TOML из объекта [`str`](https://python-all.ru/3.13/library/stdtypes.html#str). Возвращает [`dict`](https://python-all.ru/3.13/library/stdtypes.html#dict). Преобразует типы TOML в Python согласно этой [таблице соответствия](https://python-all.ru/3.13/library/tomllib.html#toml-to-py-table). Аргумент *parse\_float* имеет то же значение, что и в [`load()`](https://python-all.ru/3.13/library/tomllib.html#tomllib.load).4243Исключение [`TOMLDecodeError`](https://python-all.ru/3.13/library/tomllib.html#tomllib.TOMLDecodeError) будет возбуждено при недопустимом документе TOML.4445Доступны следующие исключения:4647#### `exception tomllib.TOMLDecodeError`4849Подкласс [`ValueError`](https://python-all.ru/3.13/library/exceptions.html#ValueError).5051## Примеры5253Разбор TOML-файла:5455```python56import tomllib5758with open("pyproject.toml", "rb") as f:59 data = tomllib.load(f)60```6162Разбор строки TOML:6364```python65import tomllib6667toml_str = """68python-version = "3.11.0"69python-implementation = "CPython"70"""7172data = tomllib.loads(toml_str)73```7475## Таблица соответствия7677| TOML | Python |78| --- | --- |79| Документ TOML | dict |80| строка | str |81| целое число | int |82| float | float (настраивается с помощью *parse\_float*) |83| булевый | bool |84| дата-время со смещением | datetime.datetime (атрибут `tzinfo` установлен в экземпляр `datetime.timezone`) |85| локальная дата-время | datetime.datetime (атрибут `tzinfo` установлен в `None`) |86| локальная дата | datetime.date |87| локальное время | datetime.time |88| массив | list |89| таблица | dict |90| встроенная таблица | dict |91| массив таблиц | список словарей |92