Primjer datoteke za konfiguraciju TOML
Specifikacija za TOML uključuje upotrebu parova ključ / vrijednost osjetljivih na velika i mala slova. Tipke su s lijeve strane, dok će vrijednosti biti s desne strane; ti su pojmovi odvojeni s obje strane znakom jednakosti. Parovi ključ / vrijednost identični su sintaksi deklaracije varijabli koju ćete vidjeti u većini programskih jezika. Također možete definirati tablice i pottablice (odjeljci i pododjeljci) u uglastim zagradama kako bi parovi ključ / vrijednost bili organizirani radi poboljšane logike raščlanjivanja i primjene u vašim programima. Vrijednosti mogu biti string, integer, float, boolean, array i vrijeme i datum. TOML omogućuje upotrebu sintakse točkica tako da možete definirati tablicu (odjeljak) kao „tablica.subtable "ili ključ kao" key.identifikator ". Ekstenzija datoteke koja se koristi za TOML datoteku je .toml. Ispod je skraćeni primjer TOML datoteke:
name = "PC igra"[zadano]
profile_name = "Profil"
player_name = "Player"
profil_stvoreno = 1979-05-27T07: 32: 00-08: 00
zvuk = istina
[korisnik]
[korisnik.profil]
name = "profil1"
player_name = "player1"
class = "ratnik"
[korisnik.postavke]
zvuk = lažno
[zadani_inventar]
ratnik = [["mač", "štit"], ["tanjir oklop", "ploča kormilo"]]
mage = [["štap", "štapić"], ["ogrtač", "kapuljača"]]
stavke = [
"napitak za zdravlje",
"protuotrov",
"napitak od mane"
]
Za referencu, ista konfiguracijska datoteka napisana je u JSON-u ispod:
"name": "PC igra",
"zadano":
"profile_name": "Profil",
"player_name": "Player",
"profile_created": "1979-05-27T15: 32: 00.000 Z ",
"zvuk": istina
,
"korisnik":
"profil":
"name": "profile1",
"player_name": "player1",
"class": "ratnik"
,
"postavke":
"zvuk": lažno
,
"default_inventory":
"ratnik": [
[
"mač",
"štit"
],
[
"tanjir oklop",
"kormilo s pločom"
]
],
"mag": [
[
"osoblje",
"štapić"
],
[
"ogrtač",
"kapuljača"
]
],
"stavke": [
"napitak za zdravlje",
"protuotrov",
"napitak od mane"
]
Razlike između formata datoteka JSON i INI
TOML je na mnogo načina sličan formatima JSON i INI, s nekoliko razlika koje mogu odrediti koji format datoteke želite koristiti. TOML format datoteke naglašava čitljivost ljudi i čini se mnogo čišćim za čitanje. INI datoteke ne podržavaju ugniježđene odjeljke i ugniježđene parove ključ / vrijednost. Za razliku od JSON-a, TOML dopušta komentare (sa simbolom #). Dugo ugniježđeni podaci u JSON datoteci mogu se zapisati u TOML u samo nekoliko redaka.
Međutim, može biti zbunjujuće pravilno identificirati strukturu u dugo ugniježđenim hijerarhijama u TOML-u, dok je u JSON-u struktura puno jasnija, iako ugniježđeni podaci mogu izgledati opširno. TOML je prvenstveno dizajniran za konfiguracijske datoteke, a ne za velike skupove strukturiranih podataka, dok je JSON pogodan za bilo koju ljestvicu strukturiranih podataka.
Python TOML modul
Python standardne knjižnice trenutno nemaju podršku za raščlanjivanje TOML podataka u vrijeme pisanja ovog članka. To se može promijeniti nakon verzije 1 TOML-a.0.0 je pušten. Zasad ćete morati koristiti Python modul treće strane pod nazivom toml. Ovaj modul možete instalirati u Ubuntu pomoću jedne od naredbi u nastavku:
$ sudo apt instalirati python3-toml$ pip3 instaliraj toml
Raščlanjivanje TOML datoteke pomoću Python TOML modula
Raščlanjivanje TOML datoteke pomoću python3-toml modula prilično je jednostavno. Možete koristiti "toml.load "za raščlanjivanje cijele datoteke ili možete koristiti" toml.učitava ”za raščlanjivanje bilo kojeg određenog para ključ / vrijednost formatiranog u TOML-u. Pod pretpostavkom „podataka.toml ”datoteka sadrži nizove oblikovane u TOML-u spomenute u gornjem primjeru, donji kod će raščlaniti i ispisati TOML podatke kao python rječnik:
#!/ usr / bin / env python3uvoz toml
tisak (toml.load ("podaci.toml "))
Pokretanje gornjeg koda rezultirat će sljedećim rezultatima:
'name': 'PC Game', 'default': 'profile_name': 'Profile', 'player_name': 'Player','profil_stvoren': datum i vrijeme.datum i vrijeme (1979, 5, 27, 7, 32, tzinfo =
'player_name': 'player1', 'class': 'warrior', 'settings': 'sound': False,
'default_inventory': 'ratnik': [['mač', 'štit'], ['tanjir oklop', 'ploča kormilo']],
'mag': [['osoblje', 'štapić'], ['ogrtač', 'kapuljača']], "predmeti": ['napitak za zdravlje', 'protuotrov',
'napitak mana']
Sada kada imate objekt rječnika python, možete implementirati bilo koju logiku u svoj program za obradu podataka rječnika.
Izbacivanje Python rječnika kao TOML oblikovanih podataka
Python rječnik se može izbaciti u nizove oblikovane u TOML pomoću „toml.dumps “ili se objekt može izbaciti u datoteku pomoću„ toml.dump ”metoda. Primjer u nastavku pretvorit će objekt rječnika nito TOML oblikovane nizove:
#!/ usr / bin / env python3uvoz toml
podaci = toml.load ("podaci.toml ")
tisak (toml.odlagališta (podaci))
Pokretanje gornjeg koda rezultirat će sljedećim rezultatima:
name = "PC igra"[zadano]
profile_name = "Profil"
player_name = "Player"
profil_stvoreno = 1979-05-27T07: 32: 00-08: 00
zvuk = istina
[zadani_inventar]
ratnik = [["mač", "štit",], ["tanjir oklop", "ploča kormilo",],]
mage = [["štap", "štapić",], ["ogrtač", "kapuljača",],]
predmeti = ["napitak za zdravlje", "protuotrov", "napitak za manu",]
[korisnik.profil]
name = "profil1"
player_name = "player1"
class = "ratnik"
[korisnik.postavke]
zvuk = lažno
Da biste objekt rječnika pretvorili u niz formatiran u TOML-u i pohranili ga u datoteku, možete upotrijebiti “toml.dump (object_object, output_file) ”metoda.
Zaključak
Jednostavnije rečeno, TOML datoteka samo je INI konfiguracijska datoteka s boljom strukturom i sintaksom, olakšavajući raščlanjivanje i bolju čitljivost. Format datoteke TOML često se uspoređuje s formatom datoteke JSON, ali osim što se koristi u konfiguracijskim datotekama, TOML nema puno korisnih programa. S druge strane, JSON je mnogo svestraniji i može se koristiti u različitim slučajevima korištenja koji zahtijevaju bilo koji tip strukture podataka.