TOML konfigurācijas faila piemērs
TOML specifikācija ietver reģistrjutīgu atslēgu un vērtību pāru izmantošanu. Taustiņi atrodas kreisajā pusē, savukārt vērtības būs labajā pusē; šos terminus abās pusēs atdala vienādības zīme. Atslēgu vērtību pāri ir identiski mainīgā deklarācijas sintaksei, kuru redzēsiet lielākajā daļā programmēšanas valodu. Jūs varat arī definēt tabulas un apakštabulas (sadaļas un apakšsadaļas) kvadrātiekavās, lai atslēgu un vērtību pāri būtu sakārtoti, lai uzlabotu parsēšanas loģiku un lietojumprogrammas jūsu programmās. Vērtības var būt virknes, vesels skaitlis, pludiņš, būla skaitlis, masīvs un laika un datuma tips. TOML ļauj izmantot punktu sintaksi, lai jūs varētu definēt tabulu (sadaļu) kā “tabulu.subtable ”vai atslēgu kā“ key.identifikators ”. TOML failam izmantotais faila paplašinājums ir .toml. Zemāk ir saīsināts TOML faila piemērs:
name = "PC Game"[noklusējums]
profile_name = "Profils"
player_name = "Spēlētājs"
profile_created = 1979-05-27T07: 32: 00-08: 00
skaņa = taisnība
[lietotājs]
[lietotājs.profils]
name = "profile1"
player_name = "spēlētājs1"
class = "karavīrs"
[lietotājs.iestatījumi]
skaņa = nepatiesa
[default_inventory]
karavīrs = [["zobens", "vairogs"], ["bruņu plāksnes", "plāksnes stūre"]]
mags = [["personāls", "zizlis"], ["halāts", "kapuce"]]
vienumi = [
"veselības dzēriens",
"pretinde",
"mana dzeramais dzēriens"
]
Atsaucei tas pats konfigurācijas fails ir rakstīts JSON zemāk:
"name": "PC Game",
"noklusējums":
"profile_name": "Profils",
"player_name": "Spēlētājs",
"profile_created": "1979-05-27T15: 32: 00.000Z ",
"skaņa": taisnība
,
"lietotājs":
"profils":
"name": "profile1",
"player_name": "player1",
"klase": "karavīrs"
,
"iestatījumi":
"skaņa": nepatiesa
,
"default_inventory":
"karotājs": [
[
"zobens",
"vairogs"
],
[
"plāksnes bruņas",
"plāksnes stūre"
]
],
"mags": [
[
"personāls",
"zizlis"
],
[
"halāts",
"kapuce"
]
],
"preces": [
"veselības dzēriens",
"pretinde",
"mana dzeramais dzēriens"
]
Atšķirības starp JSON un INI failu formātiem
TOML daudzējādā ziņā ir līdzīgs JSON un INI formātiem, ar dažām atšķirībām, kas var noteikt, kuru faila formātu vēlaties izmantot. TOML faila formāts uzsver cilvēku lasāmību un šķiet daudz tīrāks lasīšanai. INI faili neatbalsta ligzdotās sadaļas un ligzdoto atslēgu un vērtību pārus. Atšķirībā no JSON, TOML atļauj komentēt (ar # simbolu). JSON failā ilgi ligzdotus datus TOML var ierakstīt tikai dažās rindiņās.
Tomēr var būt mulsinoši pareizi identificēt struktūru TOML ilgi ligzdotajās hierarhijās, savukārt JSON struktūra ir daudz skaidrāka, kaut arī ligzdotie dati var šķist verbāli. TOML galvenokārt paredzēts konfigurācijas failiem, nevis lielām strukturētu datu kopām, savukārt JSON ir piemērots jebkuram strukturētu datu mērogam.
Python TOML modulis
Šī raksta rakstīšanas laikā Python standarta bibliotēkām pašlaik nav atbalsta TOML datu parsēšanai. Pēc TOML 1. versijas tas var mainīties.0.0 tiek izlaists. Pagaidām jums būs jāizmanto trešās puses Python modulis ar nosaukumu toml. Jūs varat instalēt šo moduli Ubuntu, izmantojot vienu no tālāk norādītajām komandām:
$ sudo apt instalējiet python3-toml$ pip3 instalēt toml
Parsējot TOML failu, izmantojot Python TOML moduli
Parsēt TOML failu, izmantojot modeli python3-toml, ir diezgan vienkārši. Varat izmantot “toml.ielādēt ”metodi, lai parsētu visu failu, vai arī varat izmantot“ toml.ielādē ”metodi, lai parsētu jebkuru konkrētu TOML formatētu atslēgu un vērtību pāri. Pieņemot, ka “dati.toml ”failā ir TOML formatētas virknes, kas minētas iepriekš minētajā piemērā, zemāk esošais kods parsēs un izdrukās TOML datus kā pitona vārdnīcu:
#!/ usr / bin / env python3importa toml
izdruka (toml.ielādēt ("dati.toml "))
Palaidot iepriekš minēto kodu, tiks izveidota šāda izeja:
'name': 'PC Game', 'default': 'profile_name': 'Profile', 'player_name': 'Player','profile_created': datuma laiks.datuma laiks (1979, 5, 27, 7, 32, tzinfo =
'player_name': 'player1', 'class': 'warrior', 'settings': 'sound': False,
'default_inventory': 'karavīrs': [['zobens', 'vairogs'], ['šķīvja bruņas', 'plāksnes stūre']],
'mags': [['personāls', 'zizlis'], ['halāts', 'kapuce']], 'priekšmeti': ['veselības mikstūra', 'pretinde',
'mana potion']
Tagad, kad jums ir objekts python vārdnīca, varat savā programmā ieviest jebkuru loģiku, lai apstrādātu vārdnīcas datus.
Python vārdnīcas izgāšana kā TOML formatētus datus
Pitona vārdnīcu var ievietot TOML formatētās virknēs, izmantojot “toml.izgāzt ”metodi, vai objektu var izmest failā, izmantojot“ toml.dump ”metodi. Tālāk sniegtajā piemērā tiks pārveidotas vārdnīcas objekta nito TOML formatētas virknes:
#!/ usr / bin / env python3importa toml
dati = toml.ielādēt ("dati.toml ")
izdruka (toml.izgāztuves (dati))
Palaidot iepriekš minēto kodu, tiks izveidota šāda izeja:
name = "PC Game"[noklusējums]
profile_name = "Profils"
player_name = "Spēlētājs"
profile_created = 1979-05-27T07: 32: 00-08: 00
skaņa = taisnība
[default_inventory]
karavīrs = [["zobens", "vairogs",], ["plāksnīšu bruņas", "plāksnes stūre",],]
mags = [["personāls", "zizlis",], ["halāts", "kapuce",],]
preces = ["veselības mikstūra", "pretinde", "mana dziras",]
[lietotājs.profils]
name = "profile1"
player_name = "spēlētājs1"
class = "karavīrs"
[lietotājs.iestatījumi]
skaņa = nepatiesa
Lai pārveidotu vārdnīcas objektu TOML formatētā virknē un saglabātu to failā, varat izmantot “toml.dump (dictionary_object, output_file) ”metodi.
Secinājums
TOML fails vienkāršākā izteiksmē ir tikai INI konfigurācijas fails ar labāku struktūru un sintaksi, kas atvieglo parsēšanu un labāku lasāmību. TOML faila formātu bieži salīdzina ar JSON faila formātu, taču, izņemot to, ka tas tiek izmantots konfigurācijas failos, TOML nav daudz lietderības. Savukārt JSON ir daudz universālāks un to var izmantot dažādos lietošanas gadījumos, kad nepieciešama jebkura veida datu struktūra.