Piton

Kako čitati i pisati TOML datoteke pomoću Pythona

Kako čitati i pisati TOML datoteke pomoću Pythona
TOML, kratica od "Tomov očigledni minimalni jezik", relativno je nov i popularan format datoteke koji se usredotočuje na minimalnu semantiku za pisanje konfiguracijskih datoteka. Format datoteke stvorio je Tom Preston-Werner, bivši izvršni direktor GitHub-a. Od trenutka pisanja ovog članka, kandidat za prvo izdanje verzije 1.0.0 je označen, tako da je specifikacija više ili manje finalizirana. Ovaj će članak dati kratki uvod u format datoteke TOML i opisati kako se ovaj format datoteke može koristiti u Python aplikacijama i skriptama.

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 python3
uvoz 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 =objekt na 0x7f3506b3d850>), 'zvuk': Tačno, 'korisnik': 'profil': 'ime': 'profil1',
'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 python3
uvoz 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.

Kontrolirajte i upravljajte kretanjem miša između više monitora u sustavu Windows 10
Dvostruki zaslon upravitelja miša omogućuje vam kontrolu i konfiguriranje kretanja miša između više monitora, usporavajući njegovo kretanje blizu gran...
WinMouse vam omogućuje prilagodbu i poboljšanje kretanja pokazivača miša na Windows računalu
Ako želite poboljšati zadane funkcije pokazivača miša, upotrijebite besplatni program WinMouse. Dodaje više značajki koje će vam pomoći da na najbolji...
Lijevi gumb miša ne radi u sustavu Windows 10
Ako s prijenosnim računalom ili stolnim računalom koristite namjenski miš, ali lijevi gumb miša ne radi u sustavu Windows 10/8/7 iz nekog razloga evo ...