Python

Как читать и писать файлы TOML с помощью Python

Как читать и писать файлы TOML с помощью Python
TOML, сокращение от «очевидный минимальный язык Тома», является относительно новым и популярным форматом файлов, который фокусируется на минимальной семантике для записи файлов конфигурации. Формат файла был создан Томом Престоном-Вернером, бывшим генеральным директором GitHub. На момент написания этой статьи первый релиз-кандидат версии 1.0.0 был помечен, поэтому спецификация более или менее окончательно доработана. В этой статье дается краткое введение в формат файла TOML и описывается, как этот формат файла можно использовать в приложениях и скриптах Python.

Пример файла конфигурации 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 =объект по адресу 0x7f3506b3d850>), 'sound': True, 'user': 'profile': 'name': 'profile1',
'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, с другой стороны, гораздо более универсален и может использоваться в различных случаях использования, требующих любого типа структуры данных.

5 лучших аркад для Linux
В настоящее время компьютеры - это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте ...
Битва за Веснот 1.13.6 Выпущена разработка
Битва за Веснот 1.13.6, выпущенная в прошлом месяце, является шестой разработкой в ​​1.13.x и содержит ряд улучшений, в первую очередь пользовательско...
Как установить League Of Legends на Ubuntu 14.04
Если вы поклонник League of Legends, то это возможность для вас протестировать League of Legends. Обратите внимание, что LOL поддерживается в PlayOnLi...