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 python3uvoz 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 =
'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 python3uvoz 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.