Příklad konfiguračního souboru TOML
Specifikace pro TOML zahrnuje použití dvojic klíč-hodnota citlivých na velká a malá písmena. Klíče jsou na levé straně, zatímco hodnoty budou na pravé straně; tyto výrazy jsou odděleny na obou stranách znaménkem rovná se. Páry klíč – hodnota jsou identické se syntaxí deklarace proměnné, kterou uvidíte ve většině programovacích jazyků. Můžete také definovat tabulky a podtabulky (oddíly a podsekce) v hranatých závorkách, abyste udrželi páry klíč-hodnota uspořádané pro vylepšenou logiku analýzy a aplikaci ve vašich programech. Hodnoty mohou být typu string, integer, float, boolean, array a time and date. TOML umožňuje použití syntaxe teček, takže můžete definovat tabulku (sekci) jako „tabulku“.podtabulka “nebo klíč jako„ klíč.identifikátor “. Přípona souboru použitá pro soubor TOML je .toml. Níže je uveden zkrácený příklad souboru TOML:
name = "PC hra"[výchozí]
profile_name = "Profil"
player_name = "Player"
profile_created = 1979-05-27T07: 32: 00-08: 00
zvuk = pravda
[uživatel]
[uživatel.profil]
name = "profile1"
player_name = "player1"
třída = "válečník"
[uživatel.nastavení]
zvuk = nepravda
[default_inventory]
warrior = [["meč", "štít"], ["talířová zbroj", "talířová přilba"]]
mág = [[„štáb“, „hůlka“], [„župan“, „kapuce“]]
položky = [
"uzdravující lektvar",
"protijed",
"lektvar many"
]
Pro srovnání je stejný konfigurační soubor napsán níže v JSON:
"name": "PC hra",
"výchozí":
"profile_name": "Profile",
"player_name": "Player",
"profile_created": "1979-05-27T15: 32: 00.000Z ",
"sound": pravda
,
"user":
"profil":
"name": "profile1",
"player_name": "player1",
"class": "warrior"
,
"settings":
"sound": false
,
"default_inventory":
"warrior": [
[
"meč",
"štít"
],
[
"talířová zbroj",
"talířová kormidla"
]
],
"mág": [
[
"personál",
"hůlka"
],
[
"župan",
"kapuce"
]
],
"items": [
"uzdravující lektvar",
"protijed",
"lektvar many"
]
Rozdíly mezi formáty souborů JSON a INI
TOML je v mnoha ohledech podobný formátům JSON a INI, s několika rozdíly, které určují, jaký formát souboru budete chtít použít. Formát souboru TOML zdůrazňuje čitelnost pro člověka a jeho čtení je mnohem čistší. Soubory INI nepodporují vnořené sekce a vnořené páry klíč – hodnota. Na rozdíl od JSON umožňuje TOML komentáře (se symbolem #). Dlouho vnořená data v souboru JSON lze zapsat do TOML na několika řádcích.
Může však být matoucí správně identifikovat strukturu v dlouhých vnořených hierarchiích v TOML, zatímco v JSON je struktura mnohem jasnější, i když se vnořená data mohou zdát podrobná. TOML je primárně určen pro konfigurační soubory a nikoli pro velké sady strukturovaných dat, zatímco JSON je vhodný pro jakoukoli škálu strukturovaných dat.
Modul Python TOML
Standardní knihovny Pythonu v době psaní tohoto článku aktuálně nemají žádnou podporu pro analýzu dat TOML. To se může změnit po TOML verze 1.0.0 je uvolněna. Prozatím budete muset použít modul Python třetí strany s názvem toml. Tento modul můžete nainstalovat do Ubuntu pomocí jednoho z níže uvedených příkazů:
$ sudo apt nainstalovat python3-toml$ pip3 install toml
Analýza souboru TOML pomocí modulu Python TOML
Analýza souboru TOML pomocí modulu python3-toml je poměrně přímočará. Můžete použít „hrobku“.Načíst “k analýze celého souboru, nebo můžete použít„ toml.načte ”metodu pro analýzu konkrétního páru klíč – hodnota ve formátu TOML. Za předpokladu „dat.soubor toml ”obsahuje řetězce formátované TOML zmíněné ve výše uvedeném příkladu, níže uvedený kód analyzuje a vytiskne data TOML jako slovník pythonu:
#!/ usr / bin / env python3importovat hrobku
tisk (toml.načíst data.hrob "))
Spuštění výše uvedeného kódu způsobí následující výstup:
'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': 'warrior': [['sword', 'shield'], ['plate armor', 'plate helm']],
„mág“: [[„personál“, „hůlka“], [„župan“, „kapuce“]], „předměty“: [„lektvar zdraví“, „protijed“,
'lektvar many']
Nyní, když máte objekt slovníku pythonu, můžete do svého programu implementovat libovolnou logiku pro zpracování dat slovníku.
Dumping Python Dictionary as TOML Formatted Data
Slovník pythonu lze vypsat do řetězců formátovaných TOML pomocí „toml.výpisy “nebo lze objekt vypsat do souboru pomocí„ toml.skládka “. Níže uvedený příklad převede řetězce slovníku nito na formátované řetězce TOML:
#!/ usr / bin / env python3importovat hrobku
data = toml.načíst data.hrob ")
tisk (toml.skládky (data))
Spuštění výše uvedeného kódu způsobí následující výstup:
name = "PC hra"[výchozí]
profile_name = "Profil"
player_name = "Player"
profile_created = 1979-05-27T07: 32: 00-08: 00
zvuk = pravda
[default_inventory]
warrior = [["meč", "štít",], ["talířová zbroj", "talířová přilba",],]
mág = [["personál", "hůlka",], ["župan", "kapuce",],]
items = ["lektvar zdraví", "protijed", "lektvar many",]
[uživatel.profil]
name = "profile1"
player_name = "player1"
třída = "válečník"
[uživatel.nastavení]
zvuk = nepravda
Chcete-li převést objekt slovníku na řetězec ve formátu TOML a uložit jej do souboru, můžete použít „toml.dump (dictionary_object, output_file) ”metoda.
Závěr
Jednodušší soubor TOML je pouze konfigurační soubor INI s lepší strukturou a syntaxí, což usnadňuje snadnější analýzu a lepší čitelnost. Formát souboru TOML je často srovnáván s formátem souboru JSON, ale kromě jeho použití v konfiguračních souborech nemá TOML moc užitečnosti. Na druhou stranu JSON je mnohem univerzálnější a lze jej použít v různých případech použití vyžadujících jakýkoli typ datové struktury.