Python

Kuinka lukea ja kirjoittaa TOML-tiedostoja Pythonilla

Kuinka lukea ja kirjoittaa TOML-tiedostoja Pythonilla
TOML, lyhenne sanoista “Tom's Object Minimal Language”, on suhteellisen uusi ja suosittu tiedostomuoto, joka keskittyy minimaaliseen semantiikkaan kokoonpanotiedostojen kirjoittamiseen. Tiedostomuodon on luonut GitHubin entinen toimitusjohtaja Tom Preston-Werner. Tämän artikkelin kirjoittamisen jälkeen version 1 ensimmäinen julkaisijaehdokas.0.0 on merkitty, joten määrittely on enemmän tai vähemmän viimeistelty. Tässä artikkelissa annetaan lyhyt esittely TOML-tiedostomuodosta ja kuvataan, kuinka tätä tiedostomuotoa voidaan käyttää Python-sovelluksissa ja komentosarjoissa.

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 python3
tuo 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 =object at 0x7f3506b3d850>), 'sound': True, 'user': 'profile': 'name': 'profile1',
'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 python3
tuo 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ä.

Parhaat Linux-peliohjaimen kartoitussovellukset
Jos haluat pelata pelejä Linuxissa peliohjaimella tyypillisen näppäimistön ja hiiren syöttöjärjestelmän sijaan, on sinulle hyödyllisiä sovelluksia. Mo...
Hyödyllisiä työkaluja Linux-pelaajille
Jos haluat pelata pelejä Linuxissa, on todennäköistä, että olet käyttänyt sovelluksia ja apuohjelmia, kuten Wine, Lutris ja OBS Studio, pelikokemuksen...
HD Remastered Games for Linux that Never had a Linux Release Earlier
Many game developers and publishers are coming up with HD remaster of old games to extend the life of franchise, please fans requesting compatibility ...