TOML konfigūracijos failo pavyzdys
TOML specifikacija apima didžiųjų ir mažųjų raidžių reikšmių porų naudojimą. Klavišai yra kairėje pusėje, o vertės - dešinėje; šiuos terminus abiejose pusėse skiria lygybės ženklas. Raktų ir reikšmių poros yra identiškos kintamųjų deklaracijų sintaksei, kurią matysite daugumoje programavimo kalbų. Taip pat galite apibrėžti lenteles ir papilčius (skyrius ir poskirsnius) laužtiniuose skliaustuose, kad raktų ir reikšmių poros būtų sutvarkytos, kad būtų pagerinta analizavimo logika ir programa jūsų programose. Vertės gali būti eilutės, sveikasis skaičius, plūduriuojantisis, loginis, masyvas, laiko ir datos tipas. TOML leidžia naudoti taškų sintaksę, kad jūs galėtumėte apibrėžti lentelę (skyrių) kaip „lentelę.subtable “arba raktas kaip„ key.identifikatorius “. Failo plėtinys, naudojamas TOML failui, yra .toml. Žemiau pateikiamas sutrumpintas TOML failo pavyzdys:
name = "PC Game"[numatytas]
profile_name = "Profilis"
player_name = "Žaidėjas"
profile_created = 1979-05-27T07: 32: 00-08: 00
garsas = tiesa
[Vartotojas]
[Vartotojas.profilis]
vardas = "profilis1"
grotuvo_pavadinimas = "grotuvas1"
class = "karys"
[Vartotojas.nustatymai]
garsas = klaidingas
[default_inventory]
karys = [["kardas", "skydas"], ["plokšti šarvai", "plokštės vairas"]]
magas = [["personalas", "lazdelė"], ["chalatas", "gaubtas"]]
elementai = [
"gyvybės eliksyras",
„priešnuodis“,
„manos gėrimas“
]
Norėdami sužinoti, tas pats konfigūracijos failas yra parašytas JSON žemiau:
"name": "PC žaidimas",
"numatytas":
"profile_name": "Profilis",
"player_name": "Žaidėjas",
"profile_created": "1979-05-27T15: 32: 00.000Z ",
„garsas“: tiesa
,
"Vartotojas":
„profilis“:
"vardas": "profilis1",
"player_name": "grotuvas1",
„klasė“: „karys“
,
„nustatymai“:
„garsas“: klaidingas
,
"default_inventory":
„karys“: [
[
"Kardas",
„skydas“
],
[
„plokštiniai šarvai“,
„plokštės vairas“
]
],
„magas“: [
[
„personalas“,
"lazdelė"
],
[
"Chalatas",
„gaubtas“
]
],
„daiktai“: [
"gyvybės eliksyras",
„priešnuodis“,
„manos gėrimas“
]
JSON ir INI failų formatų skirtumai
TOML daugeliu atžvilgių yra panašus į JSON ir INI formatus, su keliais skirtumais, kurie gali nustatyti, kurį failo formatą norėsite naudoti. TOML failo formatas pabrėžia žmonių įskaitomumą ir atrodo daug švaresnis skaityti. INI failai nepalaiko įdėtų sekcijų ir įdėtų raktų-reikšmių porų. Skirtingai nuo JSON, TOML leidžia komentuoti (su simboliu #). Ilgai įdėtus duomenis JSON faile galima parašyti TOML tik keliose eilutėse.
Tačiau gali būti painu tinkamai identifikuoti struktūrą ilgai įdėtose TOML hierarchijose, tuo tarpu JSON struktūra yra daug aiškesnė, nors įdėti duomenys gali pasirodyti verbiški. TOML pirmiausia skirtas konfigūracijos failams, o ne dideliems struktūrizuotiems duomenų rinkiniams, o JSON tinka bet kokiam struktūrizuotų duomenų mastui.
„Python TOML“ modulis
Šio straipsnio rašymo metu „Python“ standartinės bibliotekos šiuo metu neturi jokio palaikymo analizuojant TOML duomenis. Tai gali pasikeisti po TOML 1 versijos.0.0 išleidžiamas. Kol kas turėsite naudoti trečiosios šalies „Python“ modulį, vadinamą toml. Šį modulį galite įdiegti „Ubuntu“ naudodami vieną iš toliau nurodytų komandų:
$ sudo apt įdiekite python3-toml$ pip3 įdiekite toml
Analizuojant TOML failą naudojant „Python TOML“ modulį
Išanalizuoti TOML failą naudojant python3-toml modulį yra gana paprasta. Galite naudoti „toml.įkelti “metodą, kad išanalizuotumėte visą failą, arba galite naudoti„ toml.apkrovos “metodas išanalizuoti bet kurią konkrečią TOML suformatuotą raktų ir verčių porą. Darant prielaidą, kad „duomenys.toml “faile yra TOML formato eilutės, paminėtos aukščiau pateiktame pavyzdyje, žemiau pateiktas kodas analizuos ir spausdins TOML duomenis kaip„ python “žodyną:
#!/ usr / bin / env python3importuoti toml
spausdinti (toml.įkelti ("duomenys.toml "))
Paleidus aukščiau esantį kodą bus sukurtas toks išvestis:
'name': 'PC Game', 'default': 'profile_name': 'Profile', 'player_name': 'Player ",'profile_created': datos laikas.datos laikas (1979, 5, 27, 7, 32, tzinfo =
'player_name': 'player1', 'class': 'warrior', 'settings': 'sound': False,
'default_inventory': 'karys': [['kardas', 'skydas'], ['plokšti šarvai', 'plokščiasis vairas']],
„magas“: [[„personalas“, „lazdelė“], [„chalatas“, „gaubtas“]], „daiktai“: [„sveikatos gėrimas“, „priešnuodis“,
'mana potion']
Dabar, kai turite „python“ žodyno objektą, galite įdiegti bet kokią savo programos logiką tvarkyti žodyno duomenis.
„Python“ žodyno išmetimas kaip TOML formato duomenis
Python žodynas gali būti išmestas į TOML formato eilutes naudojant „toml.sąvartynas “, arba objektą galima iškelti į failą naudojant„ toml.sąvartynas “metodas. Žemiau pateiktame pavyzdyje bus konvertuotos žodyno objekto „Nito“ TOML formato eilutės:
#!/ usr / bin / env python3importuoti toml
duomenys = toml.įkelti ("duomenys.Toml ")
spausdinti (toml.sąvartynai (duomenys))
Paleidus pirmiau nurodytą kodą bus sukurta tokia išvestis:
name = "PC Game"[numatytas]
profile_name = "Profilis"
player_name = "Žaidėjas"
profile_created = 1979-05-27T07: 32: 00-08: 00
garsas = tiesa
[default_inventory]
karys = [["kardas", "skydas",], ["plokšti šarvai", "plokštės vairas",],]
magas = [["personalas", "lazdelė",], ["chalatas", "gaubtas",],]
items = ["sveikatos gėrimas", "priešnuodis", "manos gėrimas",]
[Vartotojas.profilis]
vardas = "profilis1"
grotuvo_vardas = "grotuvas1"
class = "karys"
[Vartotojas.nustatymai]
garsas = klaidingas
Norėdami konvertuoti žodyno objektą į TOML formato eilutę ir išsaugoti jį faile, galite naudoti „toml“.dump (dictionary_object, output_file) “metodas.
Išvada
Paprasčiau tariant, TOML failas yra tik INI konfigūracijos failas, turintis geresnę struktūrą ir sintaksę, palengvinantis analizavimą ir geresnį įskaitomumą. TOML failo formatas dažnai lyginamas su JSON failo formatu, tačiau, be jo naudojimo konfigūracijos failuose, TOML neturi daug naudingumo. Kita vertus, JSON yra daug universalesnis ir gali būti naudojamas įvairiais naudojimo atvejais, kai reikalingas bet koks duomenų struktūros tipas.