Python

Как да четем и пишем TOML файлове с помощта на Python

Как да четем и пишем TOML файлове с помощта на Python
TOML, съкратено от „Очевидният минимален език на Том“, е относително нов и популярен файлов формат, който се фокусира върху минималната семантика за писане на конфигурационни файлове. Файловият формат е създаден от Том Престън-Вернер, бившият главен изпълнителен директор на GitHub. Към момента на писане на тази статия, кандидатът за първа версия на версия 1.0.0 е маркиран, така че спецификацията е повече или по-малко финализирана. Тази статия ще даде кратко въведение във файловия формат TOML и ще опише как този файлов формат може да се използва в приложения и скриптове на Python.

Пример за файл за конфигурация на TOML

Спецификацията за TOML включва използване на чувствителни към регистъра двойки ключ-стойност. Клавишите са от лявата страна, докато стойностите ще са от дясната страна; тези термини са разделени от двете страни със знак за равенство. Двойките ключ-стойност са идентични със синтаксиса на декларацията на променлива, който ще видите в повечето езици за програмиране. Можете също така да дефинирате таблици и подтаблици (раздели и подраздели) в квадратни скоби, за да поддържате двойките ключ-стойност организирани за подобрена логика на разбор и приложение във вашите програми. Стойностите могат да бъдат от низове, цели числа, плаващи, логически, масив и типове час и дата. TOML позволява използването на синтаксис на точки, така че да можете да определите таблица (раздел) като „таблица.подтаблица “или ключ като„ ключ.идентификатор “. Файловото разширение, използвано за TOML файл, е .toml. По-долу е съкратен пример за TOML файл:

name = "PC игра"
[по подразбиране]
profile_name = "Профил"
player_name = "Играч"
profile_created = 1979-05-27T07: 32: 00-08: 00
звук = вярно
[потребител]
[потребител.профил]
name = "profile1"
player_name = "player1"
class = "воин"
[потребител.настройки]
звук = невярно
[default_inventory]
воин = [["меч", "щит"], ["плоча броня", "плоча шлем"]]
маг = [["персонал", "пръчка"], ["халат", "качулка"]]
елементи = [
"елексир за здраве",
"противоотрова",
"отвара за мана"
]

За справка, същият конфигурационен файл е написан в JSON по-долу:


"name": "PC игра",
"по подразбиране":
"profile_name": "Профил",
"player_name": "Играч",
"profile_created": "1979-05-27T15: 32: 00.000Z ",
"звук": вярно
,
"потребител":
"profile":
"name": "profile1",
"player_name": "player1",
"class": "воин"
,
"настройки":
"звук": невярно

,
"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.load ”метод за анализиране на всяка специфична двойка ключ-стойност, форматирана в TOML. Ако приемем „данни.toml ”файлът съдържа форматираните в TOML низове, споменати в примера по-горе, кодът по-долу ще анализира и отпечата TOML данни като речник на python:

#!/ usr / bin / env python3
внос toml
печат (toml.load ("данни.toml "))

Изпълнението на горния код ще даде следния резултат:

'name': 'PC Game', 'default': 'profile_name': 'Profile', 'player_name': 'Player',
'profile_created': дата и час.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.изхвърля ”, или обектът може да бъде изхвърлен във файл с помощта на„ toml.метод за изхвърляне ”. Примерът по-долу ще преобразува речнически обект, форматирани в NOML форматирани низове:

#!/ usr / bin / env python3
внос toml
данни = toml.load ("данни.toml ")
печат (toml.сметища (данни))

Изпълнението на горния код ще доведе до следния изход:

name = "PC игра"
[по подразбиране]
profile_name = "Профил"
player_name = "Играч"
profile_created = 1979-05-27T07: 32: 00-08: 00
звук = вярно

[default_inventory]
войн = [["меч", "щит",], ["броня броня", "плоча шлем",],]
маг = [["персонал", "пръчка",], ["халат", "качулка",],]
items = ["отвара за здраве", "противоотрова", "отвара за мана",]

[потребител.профил]
name = "profile1"
player_name = "player1"
class = "воин"
[потребител.настройки]
звук = невярно

За да конвертирате обект от речник в форматиран низ от TOML и да го съхраните във файл, можете да използвате „toml.метод на изхвърляне (обект_речник, изходен_файл) ”.

Заключение

TOML файлът с по-прости думи е просто INI конфигурационен файл с по-добра структура и синтаксис, улесняващ по-лесното анализиране и по-добра четливост. Файловият формат TOML често се сравнява с файловия формат JSON, но освен използването му в конфигурационни файлове, TOML няма много полезност. JSON, от друга страна, е много по-гъвкав и може да се използва в различни случаи на употреба, изискващи какъвто и да е тип структура на данните.

Бутонът на левия бутон на мишката не работи в Windows 10
Ако използвате специална мишка с вашия лаптоп или настолен компютър, но бутонът на левия бутон на мишката не работи на Windows 10/8/7 по някаква причи...
Курсорът скача или се движи произволно, докато пишете в Windows 10
Ако установите, че курсорът на вашата мишка скача или се движи самостоятелно, автоматично, произволно, докато пишете в лаптоп или компютър на Windows,...
Как да обърнете посоката на превъртане на мишката и тъчпада в Windows 10
Мишка и Тъчпадs не само правят изчисленията лесни, но и по-ефективни и отнемат по-малко време. Не можем да си представим живот без тези устройства, но...