Krajta

Jak číst a zapisovat soubory TOML pomocí Pythonu

Jak číst a zapisovat soubory TOML pomocí Pythonu
TOML, zkratka pro „Tom's Obvious Minimal Language“, je relativně nový a populární formát souborů, který se zaměřuje na minimální sémantiku pro zápis konfiguračních souborů. Formát souboru vytvořil Tom Preston-Werner, bývalý generální ředitel společnosti GitHub. V době psaní tohoto článku byl prvním kandidátem na vydání verze 1.0.Značka 0 byla označena, takže specifikace je víceméně dokončena. Tento článek poskytne krátký úvod do formátu souboru TOML a popisuje, jak lze tento formát souboru použít v aplikacích a skriptech Pythonu.

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 python3
importovat 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 =objekt na 0x7f3506b3d850>), 'sound': True, 'user': 'profile': 'name': 'profile1',
'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 python3
importovat 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.

Ovládejte a spravujte pohyb myši mezi více monitory ve Windows 10
Správce myší se dvěma displeji umožňuje ovládat a konfigurovat pohyb myši mezi více monitory zpomalením jeho pohybů poblíž hranice. Windows 10/8 vám u...
WinMouse vám umožňuje přizpůsobit a vylepšit pohyb ukazatele myši na PC s Windows
Chcete-li vylepšit výchozí funkce ukazatele myši, použijte freeware WinMouse. Přidává další funkce, které vám pomohou vytěžit ze své skromné ​​myši ma...
V systému Windows 10 nefunguje levé tlačítko myši
Pokud používáte speciální myš s notebookem nebo stolním počítačem, ale levé tlačítko myši nefunguje ve Windows 10/8/7 z nějakého důvodu uvádíme několi...