Python

Ako čítať a zapisovať súbory TOML pomocou Pythonu

Ako čítať a zapisovať súbory TOML pomocou Pythonu
TOML, skratka pre „Tom's Obvious Minimal Language“, je relatívne nový a populárny formát súborov, ktorý sa pri písaní konfiguračných súborov zameriava na minimálnu sémantiku. Formát súboru vytvoril Tom Preston-Werner, bývalý generálny riaditeľ spoločnosti GitHub. V čase písania tohto článku bol prvý kandidát na vydanie verzie 1.0.Značka 0 bola označená, takže špecifikácia je viac-menej finalizovaná. Tento článok poskytne základné informácie o formáte súboru TOML a popíše, ako je možné tento formát súboru použiť v aplikáciách a skriptoch Python.

Príklad konfiguračného súboru TOML

Špecifikácia pre TOML zahŕňa použitie párov kľúč - hodnota, ktoré rozlišujú veľké a malé písmená. Klávesy sú na ľavej strane, zatiaľ čo hodnoty budú na pravej strane; tieto pojmy sú od seba oddelené znamienkom rovnosti. Páry kľúč - hodnota sú identické so syntaxou deklarácie premennej, ktorú uvidíte vo väčšine programovacích jazykov. Môžete tiež definovať tabuľky a podtabuľky (oddiely a pododdiely) v hranatých zátvorkách, aby ste udržali usporiadané páry kľúč - hodnota pre vylepšenú logiku syntézy a aplikáciu vo svojich programoch. Hodnoty môžu byť typu string, integer, float, boolean, array a time and date. TOML umožňuje použitie syntaxe bodiek, takže môžete definovať tabuľku (sekciu) ako „tabuľku“.podtabuľka “alebo kľúč ako„ kľúč.identifikátor “. Prípona súboru použitá pre súbor TOML je .hrobka. Nižšie je uvedený skrátený príklad súboru TOML:

name = "PC hra"
[predvolené]
profile_name = "Profil"
player_name = "Player"
profile_created = 1979-05-27T07: 32: 00-08: 00
zvuk = pravda
[užívateľ]
[užívateľ.profil]
name = "profil1"
player_name = "player1"
trieda = "bojovník"
[užívateľ.nastavenie]
zvuk = nepravda
[default_inventory]
warrior = [["meč", "štít"], ["tanierové brnenie", "tanierové kormidlo"]]
mág = [[„štáb“, „prútik“], [„župan“, „kukla“]]
položky = [
"liečivý nápoj",
„protijed“,
"lektvar many"
]

Pre porovnanie, ten istý konfiguračný súbor je napísaný v JSON nižšie:


"name": "PC hra",
"predvolené":
"profile_name": "Profile",
"player_name": "Player",
"profile_created": "1979-05-27T15: 32: 00.000Z ",
"zvuk": pravda
,
"user":
"profil":
"name": "profile1",
"player_name": "player1",
"class": "warrior"
,
"nastavenie":
"zvuk": nepravda

,
"default_inventory":
"warrior": [
[
„meč“,
„štít“
],
[
„tanierové brnenie“,
„tanierová kormidlo“
]
],
"mág": [
[
„štáb“,
„prútik“
],
[
„župan“,
„kapucňa“
]
],
"items": [
"liečivý nápoj",
„protijed“,
"lektvar many"
]

Rozdiely medzi formátmi súborov JSON a INI

TOML je v mnohých ohľadoch podobný formátom JSON a INI, s niekoľkými rozdielmi, ktoré určia, ktorý formát súboru budete chcieť použiť. Formát súboru TOML zdôrazňuje čitateľnosť pre človeka a jeho čítanie sa zdá byť oveľa čistejšie. Súbory INI nepodporujú vnorené sekcie a vnorené páry kľúč - hodnota. Na rozdiel od JSON umožňuje TOML komentáre (so symbolom #). Údaje s dlhým vnorením do súboru JSON je možné zapísať do jazyka TOML iba na pár riadkov.

Môže však byť mätúce správne identifikovať štruktúru v dlho vnorených hierarchiách v TOML, zatiaľ čo v JSON je štruktúra oveľa jasnejšia, aj keď sa vnorené údaje môžu javiť ako podrobné. TOML je primárne určený pre konfiguračné súbory a nie pre veľké súbory štruktúrovaných údajov, zatiaľ čo formát JSON je vhodný pre ľubovoľnú škálu štruktúrovaných údajov.

Modul Python TOML

Štandardné knižnice Pythonu v čase písania tohto článku v súčasnosti nepodporujú analýzu údajov TOML. To sa môže zmeniť po TOML verzie 1.0.0 sa uvoľní. Zatiaľ budete musieť použiť modul Python tretej strany s názvom hrobka. Tento modul môžete nainštalovať do Ubuntu pomocou jedného z nižšie uvedených príkazov:

$ sudo apt nainštalovať python3-toml
$ pip3 nainštalovať toml

Analýza súboru TOML pomocou modulu Python TOML

Analýza súboru TOML pomocou modulu python3-toml je pomerne jednoduchá. Môžete použiť buď „hrobku“.načítať “na analýzu celého súboru, alebo môžete použiť„ toml.Načíta ”na analýzu ktoréhokoľvek konkrétneho páru kľúč - hodnota vo formáte TOML. Za predpokladu „dát.súbor toml ”obsahuje reťazce formátované TOML uvedené v príklade vyššie, nižšie uvedený kód analyzuje a vytlačí údaje TOML ako slovník pythonu:

#!/ usr / bin / env python3
importná hrobka
tlač (toml.načítať ("údaje.hrob "))

Spustenie vyššie uvedeného kódu spôsobí nasledujúci výstup:

'name': 'PC Game', 'default': 'profile_name': 'Profile', 'player_name': 'Player',
'profile_created': dátum a čas.dátum a čas (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': [['' meč ',' štít '], [' tanierové brnenie ',' tanierové kormidlo ']],
„mág“: [[„personál“, „prútik“], [„župan“, „kukla“]], „predmety“: [„lektvar zdravia“, „protijed“,
'lektvar many']

Teraz, keď máte objekt slovníka python, môžete do svojho programu implementovať ľubovoľnú logiku na spracovanie slovníkových údajov.

Vypisovanie slovníka Python ako dát vo formáte TOML

Slovník python je možné vypisovať do reťazcov formátovaných TOML pomocou „toml.výpisy “alebo je možné objekt vyhodiť do súboru pomocou„ toml.skládka “. V nasledujúcom príklade sa prevedie slovníkový objekt nito reťazce formátované TOML:

#!/ usr / bin / env python3
importná hrobka
data = toml.načítať ("údaje.hrob ")
tlač (toml.skládky (údaje))

Spustenie vyššie uvedeného kódu spôsobí nasledujúci výstup:

name = "PC hra"
[predvolené]
profile_name = "Profil"
player_name = "Player"
profile_created = 1979-05-27T07: 32: 00-08: 00
zvuk = pravda

[default_inventory]
warrior = [["meč", "štít",], ["tanierové brnenie", "tanierové kormidlo",],]
mág = [["štáb", "prútik",], ["župan", "kukla",],]
items = ["lektvar zdravia", "protijed", "lektvar many",]

[užívateľ.profil]
name = "profil1"
player_name = "player1"
trieda = "bojovník"
[užívateľ.nastavenie]
zvuk = nepravda

Ak chcete previesť objekt slovníka na reťazec vo formáte TOML a uložiť ho do súboru, môžete použiť „toml.dump (dictionary_object, output_file) ”metóda.

Záver

Jednoduchšie povedané súbor TOML je iba konfiguračný súbor INI s lepšou štruktúrou a syntaxou, ktorý uľahčuje ľahšiu analýzu a lepšiu čitateľnosť. Formát súboru TOML sa často porovnáva s formátom súboru JSON, ale okrem použitia v konfiguračných súboroch nemá TOML veľa užitočnosti. Na druhej strane JSON je oveľa univerzálnejší a dá sa použiť v rôznych prípadoch použitia vyžadujúcich akýkoľvek typ dátovej štruktúry.

Hry Top 10 hier, ktoré sa dajú hrať na Ubuntu
Top 10 hier, ktoré sa dajú hrať na Ubuntu
Platforma Windows je jednou z dominujúcich platforiem pre hry kvôli obrovskému percentu hier, ktoré sa dnes vyvíjajú na natívnu podporu systému Window...
Hry 5 najlepších arkádových hier pre Linux
5 najlepších arkádových hier pre Linux
V dnešnej dobe sú počítače vážne stroje používané na hranie hier. Ak nemôžete dosiahnuť nové najvyššie skóre, budete vedieť, čo tým myslím. V tomto pr...
Hry Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 vydané minulý mesiac, je šiestym vývojovým vydaním v 1.13.séria x a prináša množstvo vylepšení, najmä používateľského rozhra...