Python

Kako brati in pisati datoteke TOML s pomočjo Pythona

Kako brati in pisati datoteke TOML s pomočjo Pythona
TOML, okrajšava od "Tomov očitni minimalni jezik", je razmeroma nova in priljubljena oblika zapisa datotek, ki se osredotoča na minimalno semantiko pisanja konfiguracijskih datotek. Format datoteke je ustvaril Tom Preston-Werner, nekdanji izvršni direktor podjetja GitHub. Od trenutka nastanka tega članka je bil kandidat za prvo izdajo različice 1.0.0 je bilo označeno, zato je specifikacija bolj ali manj dokončana. Ta članek bo na kratko predstavil format datoteke TOML in opisal, kako se ta oblika datoteke lahko uporablja v aplikacijah in skriptih Python.

Primer konfiguracijske datoteke TOML

Specifikacija za TOML vključuje uporabo parov ključ / vrednost, ki upoštevajo velike in male črke. Tipke so na levi strani, vrednosti pa na desni strani; ti izrazi so na obeh straneh ločeni z enačbo. Parovi ključ / vrednost so enaki sintaksi deklaracije spremenljivk, ki jo boste videli v večini programskih jezikov. Tabele in podtabele (odseki in pododdelki) lahko definirate tudi v oglatih oklepajih, da ohranite pare ključ / vrednost organizirane za izboljšano logiko razčlenjevanja in uporabo v vaših programih. Vrednosti so lahko vrste nizov, celo število, plovec, logična vrednost, matrika ter čas in datum. TOML omogoča uporabo sintakse pik, tako da lahko tabelo (odsek) definirate kot »tabela.podtabela "ali ključ kot" ključ.identifikator «. Pripona datoteke, ki se uporablja za datoteko TOML, je .toml. Spodaj je okrajšani primer datoteke TOML:

name = "PC igra"
[privzeto]
profile_name = "Profil"
player_name = "Player"
profile_created = 1979-05-27T07: 32: 00-08: 00
zvok = resnično
[uporabnik]
[uporabnik.profil]
name = "profile1"
player_name = "player1"
class = "bojevnik"
[uporabnik.nastavitve]
zvok = napačno
[privzeti_popis]
bojevnik = [["meč", "ščit"], ["ploščasti oklep", "ploščata čelada]]]
mage = [["štab", "palica"], ["halja", "kapuca"]]
predmetov = [
"zdravilni napoj",
"protistrup",
"napoj mana"
]

Za referenco je ista konfiguracijska datoteka napisana spodaj v JSON:


"name": "PC igra",
"privzeto":
"profile_name": "Profil",
"player_name": "Igralec",
"profile_created": "1979-05-27T15: 32: 00.000Z ",
"zvok": resnično
,
"uporabnik":
"profil":
"name": "profile1",
"player_name": "player1",
"class": "bojevnik"
,
"nastavitve":
"zvok": napačno

,
"default_inventory":
"bojevnik": [
[
"meč",
"ščit"
],
[
"tablični oklep",
"krmilo"
]
],
"čarovnik": [
[
"osebje",
"palica"
],
[
"halja",
"kapuca"
]
],
"predmeti": [
"zdravilni napoj",
"protistrup",
"napoj mana"
]

Razlike med formati datotek JSON in INI

TOML je v marsičem podoben formatom JSON in INI, z nekaj razlikami, ki lahko določijo, kateri format datoteke boste želeli uporabiti. Format datoteke TOML poudarja človekovo berljivost in je videti veliko bolj čist za branje. Datoteke INI ne podpirajo ugnezdenih odsekov in ugnezdenih parov ključ-vrednost. Za razliko od JSON, TOML dovoljuje komentarje (s simbolom #). Dolgo ugnezdene podatke v datoteko JSON lahko v samo nekaj vrstic zapišete v TOML.

Vendar je lahko zmedeno, če pravilno identificiramo strukturo v dolgo ugnezdenih hierarhijah v TOML, medtem ko je v JSON struktura precej jasnejša, čeprav se lahko ugnezdeni podatki zdijo podrobni. TOML je zasnovan predvsem za konfiguracijske datoteke in ne za velike strukturirane nabore podatkov, medtem ko je JSON primeren za kateri koli obseg strukturiranih podatkov.

Modul Python TOML

Standardne knjižnice Python v času pisanja tega članka trenutno nimajo nobene podpore za razčlenjevanje podatkov TOML. To se lahko spremeni po različici TOML 1.0.0 se sprosti. Zaenkrat boste morali uporabiti modul Python tretje osebe, ki se imenuje toml. Ta modul lahko namestite v Ubuntu z enim od spodnjih ukazov:

$ sudo apt namestite python3-toml
$ pip3 namesti toml

Razčlenjevanje datoteke TOML s pomočjo modula Python TOML

Razčlenjevanje datoteke TOML z uporabo modula python3-toml je dokaj enostavno. Lahko uporabite "toml.load "za razčlenitev celotne datoteke ali pa uporabite" toml.obremenitve «za razčlenitev katerega koli določenega para ključ / vrednost, oblikovanega v TOML. Ob predpostavki »podatkov.datoteka toml ”vsebuje nize v obliki zapisa TOML, omenjene v zgornjem primeru, spodnja koda bo razčlenila in natisnila podatke TOML kot slovar python:

#!/ usr / bin / env python3
uvoz toml
tisk (toml.obremenitev ("data.toml "))

Z zagonom zgornje kode boste dobili naslednje rezultate:

'name': 'PC Game', 'default': 'profile_name': 'Profile', 'player_name': 'Player',
'profile_created': datum in čas.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': 'bojevnik': [['meč', 'ščit'], ['ploščasti oklep', 'tablični krmilo]]],
'čarovnik': [['osebje', 'palica'], ['ogrinjalo', 'kapuca']], "predmeti": ["napoj za zdravje", "protistrup",
'napoj mana']

Zdaj, ko imate objekt slovarja python, lahko v svojem programu uporabite katero koli logiko za obdelavo podatkov slovarja.

Odmetavanje slovarja Python kot formatirani podatki TOML

Python-ov slovar lahko damo v nize, oblikovane v TOML, s pomočjo “toml.dumps «, ali pa je predmet mogoče zložiti v datoteko s pomočjo» toml.dump “. Spodnji primer bo pretvoril nize v obliki slovarja, oblikovane v obliki NOMO:

#!/ usr / bin / env python3
uvoz toml
podatki = toml.obremenitev ("podatki.toml ")
tisk (toml.odlagališča (podatki))

Zagon zgornje kode bo dal naslednje rezultate:

name = "PC igra"
[privzeto]
profile_name = "Profil"
player_name = "Player"
profile_created = 1979-05-27T07: 32: 00-08: 00
zvok = resnično

[privzeti_popis]
bojevnik = [["meč", "ščit",], ["ploščasti oklep", "ploščata čelada",],]
mage = [["štab", "palica",], ["halja", "kapuca",],]
items = ["napoj zdravja", "protistrup", "napoj mana",]

[uporabnik.profil]
name = "profile1"
player_name = "player1"
class = "bojevnik"
[uporabnik.nastavitve]
zvok = napačno

Če želite predmet slovarja pretvoriti v niz v obliki zapisa TOML in ga shraniti v datoteko, lahko uporabite »toml.dump (object_object, output_file) «.

Zaključek

Datoteka TOML poenostavljeno je le konfiguracijska datoteka INI z boljšo strukturo in sintakso, ki olajša razčlenjevanje in boljšo berljivost. Format datoteke TOML se pogosto primerja s formatom datoteke JSON, toda poleg uporabe v konfiguracijskih datotekah TOML nima veliko pripomočkov. Po drugi strani pa je JSON veliko bolj vsestranski in se lahko uporablja v različnih primerih uporabe, ki zahtevajo katero koli vrsto podatkovne strukture.

Najboljše aplikacije za preslikavo gamepadov za Linux
Če želite igre na Linuxu igrati z igralno ploščico namesto s tipičnim sistemom za vnos tipkovnice in miške, je za vas na voljo nekaj uporabnih aplikac...
Uporabna orodja za igralce Linux
Če radi igrate igre na Linuxu, obstaja verjetnost, da ste za izboljšanje igralne izkušnje uporabljali aplikacije in pripomočke, kot so Wine, Lutris in...
HD Remastered Games za Linux, ki prej še niso izdale Linuxa
Mnogi razvijalci iger in založniki pripravijo HD remaster starih iger, da podaljšajo življenjsko dobo franšize, zato oboževalci zahtevajo združljivost...