Python

Kuidas lugeda ja kirjutada TOML-faile Pythoni abil

Kuidas lugeda ja kirjutada TOML-faile Pythoni abil
TOML, lühidalt “Tomi silmnähtav minimaalne keel”, on suhteliselt uus ja populaarne failivorming, mis keskendub konfiguratsioonifailide kirjutamise minimaalsele semantikale. Failivormingu on loonud GitHubi endine tegevjuht Tom Preston-Werner. Selle artikli kirjutamise hetkest oli versiooni 1 esimene väljalaskekandidaat.0.0 on märgistatud, seega on spetsifikatsioon enam-vähem lõplik. Selles artiklis antakse lühike sissejuhatus TOML-failivormingusse ja kirjeldatakse, kuidas seda failivormingut saab kasutada Pythoni rakendustes ja skriptides.

TOML-i konfiguratsioonifaili näide

TOML-i spetsifikatsioon sisaldab tõstutundlike võtmeväärtuste paaride kasutamist. Klahvid asuvad vasakul, väärtused aga paremal; need mõisted on mõlemalt poolt eraldatud võrdusmärgiga. Võtme-väärtuste paarid on identsed muutuja deklaratsiooni süntaksiga, mida näete enamikus programmeerimiskeeltes. Samuti saate nurksulgudes määratleda tabelid ja alamtabelid (jaotised ja alamjaotised), et hoida oma programmides parsimisloogika ja -rakenduse jaoks võtme-väärtuste paarid korrastatuna. Väärtused võivad olla stringi, täisarvu, ujukit, tõeväärtuse, massiivi ning kellaaja ja kuupäeva tüübid. TOML lubab kasutada punkti süntaksit, et saaksite tabeli (jaotise) määratleda tabelina.alamtabel "või võti kui" võti.identifikaator ”. TOML-faili jaoks kasutatud faililaiend on .toml. Allpool on TOML-faili lühendatud näide:

name = "arvutimäng"
[vaikimisi]
profile_name = "Profiil"
mängija_nimi = "Mängija"
profile_created = 1979-05-27T07: 32: 00-08: 00
heli = tõsi
[kasutaja]
[kasutaja.profiil]
name = "profiil1"
mängija_nimi = "mängija1"
klass = "sõdalane"
[kasutaja.seaded]
heli = vale
[vaikevaru]
sõdalane = [["mõõk", "kilp"], ["plaadisoomus", "plaadirool"]]
mage = [["personal", "võlukepp"], ["rüü", "kapuuts"]]
üksused = [
"tervisjook",
"vastumürk",
"mana jook"
]

Viitamiseks on sama konfiguratsioonifail kirjutatud JSON-is allpool:


"nimi": "PC-mäng",
"vaikimisi":
"profile_name": "Profiil",
"mängija_nimi": "mängija",
"profile_created": "1979-05-27T15: 32: 00.000Z ",
"heli": tõsi
,
"kasutaja":
"profiil":
"nimi": "profiil1",
"mängija_nimi": "mängija1",
"klass": "sõdalane"
,
"seaded":
"heli": vale

,
"default_inventory":
"sõdalane": [
[
"mõõk",
"kilp"
],
[
"plaatsoomused",
"plaadi tüür"
]
],
"maag": [
[
"personal",
"võlukepp"
],
[
"rüü",
"kapuuts"
]
],
"esemed": [
"tervisjook",
"vastumürk",
"mana jook"
]

JSON- ja INI-failivormingute erinevused

TOML sarnaneb JSON- ja INI-vormingutega mitmel viisil, mõne erinevusega saab määrata, millist failivormingut soovite kasutada. TOML-failivorming rõhutab inimese loetavust ja tundub palju puhtam lugeda. INI-failid ei toeta pesastatud sektsioone ja pesastatud võtmeväärtuste paare. Erinevalt JSONist lubab TOML kommentaare (sümboliga #). JSON-faili pika sisestatud andmete saab TOML-is kirjutada vaid mõne reaga.

TOML-i pikkade sisestatud hierarhiate struktuuri õigesti tuvastamine võib olla segadust tekitav, samas kui JSON-is on see struktuur palju selgem, kuigi pesastatud andmed võivad ilmneda verbosena. TOML on mõeldud peamiselt konfiguratsioonifailide jaoks, mitte suurte struktureeritud andmekogumite jaoks, samas kui JSON sobib mis tahes struktureeritud andmete skaalal.

Pythoni TOML-moodul

Selle artikli kirjutamise ajal pole Pythoni standardraamatukogudel praegu TOML-i andmete analüüsimiseks mingit tuge. See võib pärast TOML-i versiooni 1 muutuda.0.0 vabastatakse. Esialgu peate kasutama kolmanda osapoole Pythoni moodulit nimega toml. Selle mooduli saate Ubuntu installida ühe alloleva käsu abil:

$ sudo apt installib python3-toml
$ pip3 installi toml

TOML-faili sõelumine Pythoni TOML-mooduli abil

TOML-faili sõelumine mooduli python3-toml abil on üsna lihtne. Võite kasutada kas „toml.laadige meetod kogu faili sõelumiseks või võite kasutada nuppu „toml.koormused ”meetod konkreetse TOML-vormingus võtme-väärtuste paari sõelumiseks. Eeldades, et „andmed.toml ”fail sisaldab ülaltoodud näites mainitud TOML-vormingus stringi, allolev kood sõelub ja prindib TOML-i andmed pythoni sõnaraamatuna:

#!/ usr / bin / env python3
import toml
trükk (toml.koormus ("andmed.toml "))

Ülaltoodud koodi käivitamine annab järgmise väljundi:

'nimi': 'PC-mäng', 'vaikimisi': 'profiili_nimi': 'profiil', 'mängija_nimi': 'mängija',
'profile_created': kuupäev.kuupäevaaeg (1979, 5, 27, 7, 32, tzinfo =objekt aadressil 0x7f3506b3d850>), 'sound': True, 'user': 'profile': 'name': 'profile1',
'mängija_nimi': 'mängija1', 'klass': 'sõdalane', 'seaded': 'heli': Vale,
'default_inventory': 'sõdalane': [['mõõk', 'kilp'], ['plaadisoomus', 'plaatvõrk']],
'mage': [['personal', 'võlukepp'], ['rüü', 'kapuuts']], 'esemed': ['tervisejook', 'antidoot',
'mana potion']

Nüüd, kui teil on pythoni sõnaraamatu objekt, võite oma programmis rakendada mis tahes loogikat sõnastiku andmete käitlemiseks.

Pythoni sõnaraamatu ladustamine TOML-vormingus andmetena

Püütoni sõnaraamatu saab visata TOML-vormingus stringidesse, kasutades “toml.prügimäed ”meetodi abil või objekti saab faili“ toml.dump ”meetod. Allpool toodud näide teisendab sõnastikuobjekti nito TOML vormindatud stringid:

#!/ usr / bin / env python3
import toml
andmed = toml.koormus ("andmed.toml ")
trükk (toml.prügimäed (andmed))

Ülaltoodud koodi käivitamine annab järgmise väljundi:

name = "arvutimäng"
[vaikimisi]
profile_name = "Profiil"
mängija_nimi = "Mängija"
profile_created = 1979-05-27T07: 32: 00-08: 00
heli = tõsi

[vaikevaru]
sõdalane = [["mõõk", "kilp",], ["plaadisoomus", "plaadirool",],]
mage = [["personal", "võlukepp",], ["rüü", "kapuuts",],]
esemed = ["tervisejook", "vastumürk", "manajook",]

[kasutaja.profiil]
name = "profile1"
mängija_nimi = "mängija1"
klass = "sõdalane"
[kasutaja.seaded]
heli = vale

Sõnaraamatu objekti teisendamiseks TOML-vormingus stringiks ja faili salvestamiseks võite kasutada.dump (sõnaraamatu_objekt, väljundfail) ”meetod.

Järeldus

TOML-fail lihtsamalt öeldes on lihtsalt parema struktuuri ja süntaksiga INI-konfiguratsioonifail, mis hõlbustab parsimist ja paremini loetavust. TOML-failivormingut võrreldakse sageli JSON-failivorminguga, kuid peale selle, mida kasutatakse konfiguratsioonifailides, pole TOML-il palju kasulikkust. JSON on seevastu palju mitmekülgsem ja seda saab kasutada erinevatel kasutusjuhtumitel, mis nõuavad mis tahes tüüpi andmestruktuuri.

Viis parimat mängu püüdmise kaarti
Me kõik oleme YouTube'is voogesituse mänge näinud ja armastanud. PewDiePie, Jakesepticye ja Markiplier on vaid mõned tipptasemel mängijatest, kes on t...
Kuidas mängu Linuxis arendada
Kümme aastat tagasi ei osanud paljud Linuxi kasutajad ennustada, et nende lemmikoperatsioonisüsteem on ühel päeval populaarne kommertsvideomängude män...
Kommertsmängumootorite avatud lähtekoodiga sadamad
Tasuta, avatud lähtekoodiga ja platvormidevaheliste mängumootorite puhkusereise saab kasutada nii vanade kui ka mõnede üsna hiljutiste mängude pealkir...