„Python“

Kaip skaityti ir rašyti TOML failus naudojant „Python“

Kaip skaityti ir rašyti TOML failus naudojant „Python“
„TOML“, sutrumpintai „Tomo akivaizdi minimali kalba“, yra palyginti naujas ir populiarus failų formatas, kuriame daugiausia dėmesio skiriama minimaliai konfigūracijos failų rašymo semantikai. Failo formatą sukūrė Tomas Prestonas-Werneris, buvęs „GitHub“ generalinis direktorius. Nuo to laiko, kai buvo parašytas šis straipsnis, pirmasis 1 versijos kandidatas išleido versiją.0.0 buvo pažymėta, todėl specifikacija daugmaž baigta. Šiame straipsnyje bus trumpai supažindinta su TOML failo formatu ir aprašyta, kaip šį failo formatą galima naudoti „Python“ programose ir scenarijuose.

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 python3
importuoti 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 =objektas 0x7f3506b3d850>), 'sound': True, 'user': 'profile': 'name': 'profile1',
'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 python3
importuoti 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.

Kaip rodyti OSD perdangą viso ekrano „Linux“ programose ir žaidimuose
Žaisdami viso ekrano žaidimus arba naudodamiesi programomis be išsiblaškymo viso ekrano režimu, galite nutraukti nuo susijusios sistemos informacijos,...
5 geriausios žaidimų fiksavimo kortos
Visi mes matėme ir pamėgome srautinius žaidimus „YouTube“. „PewDiePie“, „Jakesepticye“ ir „Markiplier“ yra tik vieni iš geriausių žaidėjų, kurie uždir...
Kaip sukurti žaidimą „Linux“
Prieš dešimtmetį nedaugelis „Linux“ vartotojų numatė, kad jų mėgstama operacinė sistema vieną dieną bus populiari komercinių vaizdo žaidimų žaidimų pl...