Пример файла конфигурации TOML
Спецификация TOML включает использование пар ключ-значение с учетом регистра. Клавиши находятся слева, а значения - справа; эти термины разделены с обеих сторон знаком равенства. Пары ключ-значение идентичны синтаксису объявления переменных, который вы увидите в большинстве языков программирования. Вы также можете определить таблицы и вложенные таблицы (разделы и подразделы) в квадратных скобках, чтобы пары ключ-значение были организованы для улучшения логики синтаксического анализа и применения в ваших программах. Значения могут быть строковыми, целыми, с плавающей запятой, логическими значениями, массивами, а также типами времени и даты. TOML позволяет использовать точечный синтаксис, чтобы вы могли определить таблицу (раздел) как «таблица.подтаблица »или ключ как« ключ.идентификатор », а также. Расширение файла, используемое для файла TOML, - .Toml. Ниже приведен сокращенный пример файла TOML:
name = "Игра для ПК"[По умолчанию]
profile_name = "Профиль"
player_name = "Игрок"
profile_created = 1979-05-27T07: 32: 00-08: 00
звук = правда
[Пользователь]
[Пользователь.профиль]
name = "profile1"
player_name = "player1"
class = "воин"
[Пользователь.настройки]
звук = ложь
[default_inventory]
warrior = [[«меч», «щит»], [«латный доспех», «латный шлем»]]
mage = [["посох", "палочка"], ["халат", "капюшон"]]
items = [
"зелье здоровья",
"противоядие",
"зелье маны"
]
Для справки, тот же файл конфигурации записан в формате JSON ниже:
"name": "Игра для ПК",
"По умолчанию":
"profile_name": "Профиль",
"player_name": "Игрок",
"profile_created": "1979-05-27T15: 32: 00.000Z ",
"звук": правда
,
"Пользователь":
"profile":
"имя": "профиль1",
"player_name": "player1",
"класс": "воин"
,
"настройки":
"звук": ложь
,
"default_inventory":
"воин": [
[
"меч",
"щит"
],
[
"пластинчатая броня",
"пластинчатый шлем"
]
],
"маг": [
[
"персонал",
"палочка"
],
[
"халат",
"капюшон"
]
],
"Предметы": [
"зелье здоровья",
"противоядие",
"зелье маны"
]
Различия между форматами файлов JSON и INI
TOML во многом похож на форматы JSON и INI, с некоторыми отличиями, которые могут определить, какой формат файла вы захотите использовать. Формат файла TOML подчеркивает удобочитаемость и кажется намного более понятным для чтения. Файлы INI не поддерживают вложенные разделы и вложенные пары ключ-значение. В отличие от JSON, TOML допускает комментарии (с символом #). Длинные вложенные данные в файле JSON можно записать в TOML всего за несколько строк.
Однако правильная идентификация структуры в длинных вложенных иерархиях в TOML может сбивать с толку, тогда как в JSON структура намного яснее, даже если вложенные данные могут показаться многословными. TOML в первую очередь предназначен для файлов конфигурации, а не для больших наборов структурированных данных, в то время как JSON подходит для любого масштаба структурированных данных.
Модуль Python TOML
Стандартные библиотеки Python в настоящее время не поддерживают парсинг данных TOML на момент написания этой статьи. Это может измениться после TOML версии 1.0.0 выпущено. В настоящее время вам придется использовать сторонний модуль Python под названием Toml. Вы можете установить этот модуль в Ubuntu, используя одну из следующих команд:
$ sudo apt установить python3-toml$ pip3 установить toml
Анализ файла TOML с использованием модуля Python TOML
Анализ файла TOML с использованием модуля python3-toml довольно прост. Вы можете использовать команду «toml.load », чтобы проанализировать весь файл, или вы можете использовать« toml.загружает », чтобы проанализировать любую конкретную пару" ключ-значение "в формате TOML. Предполагая, что «данные.toml »содержит строки в формате TOML, упомянутые в приведенном выше примере, приведенный ниже код будет анализировать и печатать данные TOML как словарь Python:
#!/ usr / bin / env python3импортировать томл
печать (toml.load ("данные.томл "))
Выполнение приведенного выше кода приведет к следующему результату:
'name': 'PC Game', 'default': 'profile_name': 'Profile', 'player_name': 'Player','profile_created': datetime.datetime (1979, 5, 27, 7, 32, tzinfo =
'player_name': 'player1', 'class': 'warrior', 'settings': 'sound': False,
'default_inventory': 'воин': [['меч', 'щит'], ['латный доспех', 'латный шлем']],
'маг': [['посох', 'палочка'], ['одежда', 'капюшон']], 'предметы': ['зелье здоровья', 'противоядие',
'зелье маны']
Теперь, когда у вас есть объект словаря Python, вы можете реализовать любую логику в своей программе для обработки данных словаря.
Выгрузка словаря Python в виде данных в формате TOML
Словарь Python может быть выгружен в строки в формате TOML с помощью команды «toml.dumps », либо объект можно выгрузить в файл с помощью« toml.дамп »метод. Пример ниже преобразует объект словаря в строки в формате TOML:
#!/ usr / bin / env python3импортировать томл
data = toml.load ("данные.томл ")
печать (toml.свалки (данные))
Выполнение приведенного выше кода приведет к следующему результату:
name = "Игра для ПК"[По умолчанию]
profile_name = "Профиль"
player_name = "Игрок"
profile_created = 1979-05-27T07: 32: 00-08: 00
звук = правда
[default_inventory]
warrior = [[«меч», «щит»,], [«латный доспех», «латный шлем»,],]
mage = [["посох", "палочка",], ["халат", "капюшон",],]
items = ["зелье здоровья", "противоядие", "зелье маны",]
[Пользователь.профиль]
name = "profile1"
player_name = "player1"
class = "воин"
[Пользователь.настройки]
звук = ложь
Чтобы преобразовать объект словаря в строку в формате TOML и сохранить его в файле, вы можете использовать команду «toml.dump (dictionary_object, output_file) »метод.
Заключение
Проще говоря, файл TOML - это просто файл конфигурации INI с улучшенной структурой и синтаксисом, облегчающий синтаксический анализ и лучшую читаемость. Формат файла TOML часто сравнивают с форматом файла JSON, но помимо его использования в файлах конфигурации, TOML не имеет особой полезности. JSON, с другой стороны, гораздо более универсален и может использоваться в различных случаях использования, требующих любого типа структуры данных.