Esimerkki TOML-määritystiedostosta
TOML-määrittely sisältää isojen ja pienikokoisten avainarvoparien käytön. Avaimet ovat vasemmalla puolella, kun taas arvot oikealla puolella; nämä termit on erotettu kummaltakin puolelta yhtäläisyysmerkillä. Avainarvoparit ovat identtisiä muuttujan ilmoitussyntaksin kanssa, jonka näet useimmilla ohjelmointikielillä. Voit myös määrittää taulukot ja alitaulukot (osiot ja alaosuudet) hakasulkeissa pitämään avainarvoparit järjestyksessä parempaan jäsentämislogiikkaan ja sovelluksiin ohjelmissasi. Arvot voivat olla merkkijono-, kokonaisluku-, float-, looginen-, taulukko- ja aika- ja päivämäärätyyppejä. TOML sallii pistesyntaksin käytön, jotta voit määrittää taulukon (osion) taulukoksi.subtable "tai avain" avaimena ".tunniste ”. TOML-tiedostoon käytetty tiedostopääte on .toml. Alla on lyhennetty esimerkki TOML-tiedostosta:
name = "PC-peli"[oletus]
profile_name = "Profiili"
player_name = "Pelaaja"
profile_created = 1979-05-27T07: 32: 00-08: 00
ääni = tosi
[käyttäjä]
[käyttäjä.profiili]
name = "profiili1"
pelaaja_nimi = "pelaaja1"
class = "soturi"
[käyttäjä.asetukset]
ääni = väärä
[oletusvarasto]
soturi = [["miekka", "kilpi"], ["levy-panssari", "levyn ruori"]]
mage = [["henkilökunta", "sauva"], ["viitta", "huppu"]]
kohteet = [
"terveysjuoma",
"vastalääke",
"mana juoma"
]
Viitteeksi sama kokoonpanotiedosto kirjoitetaan JSON: iin alla:
"name": "PC-peli",
"oletus":
"profile_name": "Profiili",
"pelaaja_nimi": "pelaaja",
"profile_created": "1979-05-27T15: 32: 00.000Z ",
"ääni": totta
,
"käyttäjä":
"profiili":
"name": "profiili1",
"pelaaja_nimi": "pelaaja1",
"luokka": "soturi"
,
"asetukset":
"ääni": väärä
,
"default_inventory":
"soturi": [
[
"miekka",
"kilpi"
],
[
"levypanssari",
"levy ruori"
]
],
"velho": [
[
"henkilökunta",
"sauva"
],
[
"kaapu",
"huppu"
]
],
"kohteet": [
"terveysjuoma",
"vastalääke",
"mana juoma"
]
JSON- ja INI-tiedostomuotojen erot
TOML muistuttaa JSON- ja INI-muotoja monin tavoin, muutamalla erolla, jotka voivat määrittää, mitä tiedostomuotoa haluat käyttää. TOML-tiedostomuoto korostaa ihmisten luettavuutta ja näyttää paljon puhtaammalta lukea. INI-tiedostot eivät tue sisäkkäisiä osioita ja sisäkkäisiä avainarvopareja. Toisin kuin JSON, TOML sallii kommentit (# -merkillä). JSON-tiedoston pitkät sisäkkäiset tiedot voidaan kirjoittaa TOML-muodossa vain muutamalla rivillä.
Voi kuitenkin olla hämmentävää tunnistaa rakenne oikein pitkissä sisäkkäisissä hierarkioissa TOML: ssä, kun taas JSON: ssa rakenne on paljon selkeämpi, vaikka sisäkkäiset tiedot saattavat näyttää tarkoilta. TOML on suunniteltu ensisijaisesti kokoonpanotiedostoille eikä suurille strukturoiduille tietojoukoille, kun taas JSON soveltuu mihin tahansa strukturoidun datan mittakaavaan.
Python TOML -moduuli
Python-standardikirjastoilla ei tällä hetkellä ole mitään tukea TOML-tietojen jäsentämiseen tämän artikkelin kirjoittamisen aikaan. Tämä voi muuttua TOML-version 1 jälkeen.0.0 vapautetaan. Toistaiseksi joudut käyttämään kolmannen osapuolen Python-moduulia nimeltä toml. Voit asentaa tämän moduulin Ubuntuun jollakin alla olevista komennoista:
$ sudo apt asenna python3-toml$ pip3 asenna toml
TOML-tiedoston jäsentäminen Python TOML -moduulin avulla
TOML-tiedoston jäsentäminen python3-toml-moduulin avulla on melko yksinkertaista. Voit käyttää joko “toml.lataa -menetelmä jäsentää koko tiedosto, tai voit käyttää ”toml.lataa ”-menetelmä minkä tahansa tietyn TOML-muotoisen avain-arvo-parin jäsentämiseksi. Olettaen "data.toml ”-tiedosto sisältää yllä olevassa esimerkissä mainitut TOML-muotoiset merkkijonot, alla oleva koodi jäsentää ja tulostaa TOML-tiedot python-sanakirjana:
#!/ usr / bin / env python3tuo toml
Tulosta (toml.lataa ("data.toml "))
Yllä olevan koodin suorittaminen tuottaa seuraavan tuloksen:
'nimi': 'PC-peli', 'oletus': 'profiilin_nimi': 'profiili', 'pelaajan_nimi': 'pelaaja','profile_created': päivämäärä.päivämääräaika (1979, 5, 27, 7, 32, tzinfo =
'pelaaja_nimi': 'pelaaja1', 'luokka': 'soturi', 'asetukset': 'ääni': väärä,
'default_inventory': 'soturi': [['miekka', 'kilpi'], ['levy-panssari', 'levyn ruori']],
'mage': [['henkilökunta', 'sauva'], ['viitta', 'huppu']], 'esineet': ['terveysjuoma', 'vastalääke',
'mana juoma']
Nyt kun sinulla on python-sanakirjaobjekti, voit toteuttaa ohjelmassasi minkä tahansa logiikan sanakirjan tietojen käsittelemiseksi.
Python-sanakirjan tyhjentäminen TOML-muotoisina tiedoina
Python-sanakirja voidaan kaataa TOML-muotoisiin merkkijonoihin käyttämällä “toml.kaatopaikat -menetelmä, tai objekti voidaan kaataa tiedostoon käyttämällä “toml.dump ”-menetelmä. Alla oleva esimerkki muuntaa sanakirjaobjektin nito TOML -muotoiset merkkijonot:
#!/ usr / bin / env python3tuo toml
data = toml.lataa ("data.toml ")
Tulosta (toml.kaatopaikat (tiedot))
Yllä olevan koodin suorittaminen tuottaa seuraavan tuloksen:
name = "PC-peli"[oletus]
profile_name = "Profiili"
player_name = "Pelaaja"
profile_created = 1979-05-27T07: 32: 00-08: 00
ääni = tosi
[oletusvarasto]
soturi = [["miekka", "kilpi",], ["levy-panssari", "levyn ruori",],]
mage = [["henkilökunta", "sauva",], ["viitta", "huppu",],]
items = ["terveysjuoma", "vastalääke", "manajuoma",]
[käyttäjä.profiili]
name = "profiili1"
pelaaja_nimi = "pelaaja1"
class = "soturi"
[käyttäjä.asetukset]
ääni = väärä
Jos haluat muuntaa sanakirjaobjektin TOML-muotoiseksi merkkijonoksi ja tallentaa sen tiedostoon, voit käyttää.dump (sanakirja_objekti, lähtö_tiedosto) ”-menetelmä.
Johtopäätös
TOML-tiedosto yksinkertaisemmin sanottuna on vain INI-määritystiedosto, jolla on parempi rakenne ja syntakse, mikä helpottaa jäsentämistä ja paremman luettavuuden. TOML-tiedostomuotoa verrataan usein JSON-tiedostomuotoon, mutta sen lisäksi, että sitä käytetään määritystiedostoissa, TOML: llä ei ole paljon hyötyä. JSON on toisaalta paljon monipuolisempi ja sitä voidaan käyttää erilaisissa käyttötapauksissa, joissa vaaditaan mitä tahansa tietorakennetyyppiä.