Exempel på TOML-konfigurationsfil
Specifikationen för TOML inkluderar användning av skiftlägeskänsliga nyckel-värdepar. Nycklarna finns på vänster sida, medan värdena kommer till höger; dessa termer är åtskilda på vardera sidan av ett likhetstecken. Nyckel-värde-paren är identiska med den variabla deklarationssyntaxen som du ser på de flesta programmeringsspråk. Du kan också definiera tabeller och subtabeller (avsnitt och underavsnitt) inom hakparenteser för att hålla nyckel-värdepar ordnade för förbättrad analyslogik och tillämpning i dina program. Värden kan vara av sträng-, heltal-, float-, boolean-, array- och tid- och datumtyper. TOML tillåter användning av punkt-syntax så att du kan definiera en tabell (avsnitt) som “tabell.subtabell ”eller en tangent som“ tangent.identifierare ”också. Filändelsen som används för en TOML-fil är .toml. Nedan följer ett förkortat exempel på en TOML-fil:
name = "PC-spel"[standard]
profile_name = "Profil"
player_name = "Player"
profile_created = 1979-05-27T07: 32: 00-08: 00
ljud = sant
[användare]
[användare.profil]
namn = "profil1"
player_name = "player1"
class = "krigare"
[användare.inställningar]
ljud = falskt
[standardinventar]
warrior = [["" svärd "," sköld "], [" plate rustning "," plate helm "]]
mage = [["personal", "trollstav"], ["mantel", "huva"]]
objekt = [
"hälsodryck",
"motgift",
"mana potion"
]
Som referens skrivs samma konfigurationsfil i JSON nedan:
"name": "PC-spel",
"standard":
"profile_name": "Profil",
"player_name": "Player",
"profile_created": "1979-05-27T15: 32: 00.000Z ",
"ljud": sant
,
"användare":
"profil":
"name": "profile1",
"player_name": "player1",
"class": "warrior"
,
"inställningar":
"ljud": falskt
,
"default_inventory":
"krigare": [
[
"svärd",
"skydda"
],
[
"plate rustning",
"plate rodret"
]
],
"magiker": [
[
"personal",
"trollstav"
],
[
"morgonrock",
"huva"
]
],
"objekt": [
"hälsodryck",
"motgift",
"mana potion"
]
Skillnader mellan filformaten JSON och INI
TOML liknar JSON- och INI-format på många sätt, med några skillnader som kan avgöra vilket filformat du vill använda. TOML-filformatet betonar mänsklig läsbarhet och verkar mycket renare att läsa. INI-filer stöder inte kapslade sektioner och kapslade nyckel-värdepar. Till skillnad från JSON tillåter TOML kommentarer (med # -symbolen). Lång kapslade data i en JSON-fil kan skrivas i TOML på bara några rader.
Det kan dock vara förvirrande att korrekt identifiera strukturen i långa kapslade hierarkier i TOML, medan strukturen i JSON är mycket tydligare, även om de kapslade uppgifterna kan verka mycket. TOML är främst utformad för konfigurationsfiler och inte för stora strukturerade datamängder, medan JSON är lämplig för alla skalor av strukturerade data.
Python TOML-modulen
Python-standardbibliotek har för närvarande inget stöd för att analysera TOML-data, när denna artikel skrivs. Detta kan ändras efter TOML version 1.0.0 släpps. För tillfället måste du använda en tredje parts Python-modul som heter toml. Du kan installera den här modulen i Ubuntu med ett av kommandona nedan:
$ sudo apt installera python3-toml$ pip3 installera toml
Analysera en TOML-fil med hjälp av Python TOML-modulen
Att analysera en TOML-fil med python3-toml-modulen är ganska enkel. Du kan antingen använda “toml.ladda "-metoden för att analysera hela filen, eller så kan du använda" toml.laddar ”-metoden för att analysera ett specifikt TOML-formaterat nyckel-värdepar. Antar en "data.toml ”-filen innehåller de TOML-formaterade strängarna som nämns i exemplet ovan, koden nedan analyserar och skriver ut TOML-data som en pythonordbok:
#!/ usr / bin / env python3importera toml
skriva ut (toml.ladda data.toml "))
Att köra koden ovan ger följande utdata:
'name': 'PC Game', 'default': 'profile_name': 'Profile', 'player_name': 'Player','profile_created': datetime.datetime (1979, 5, 27, 7, 32, tzinfo =
'player_name': 'player1', 'class': 'warrior', 'settings': 'sound': False,
'default_inventory': 'warrior': [['' svärd ',' shield '], [' plate rustning ',' plate helm ']],
'mage': [['staff', 'wand'], ['mantel', 'huva']], 'items': ['health potion', 'motgift',
'mana potion']
Nu när du har ett python-ordbokobjekt kan du implementera vilken logik som helst i ditt program för att hantera ordboksdata.
Dumpa en Python-ordbok som TOML-formaterad data
En python-ordlista kan dumpas i TOML-formaterade strängar med "toml.dumps-metoden, eller objektet kan dumpas i en fil med hjälp av "toml.dump ”-metoden. I exemplet nedan konverteras ett ordbokobjekt nito TOML-formaterade strängar:
#!/ usr / bin / env python3importera toml
data = toml.ladda data.toml ")
skriva ut (toml.dumpar (data))
Att köra ovanstående kod ger följande utdata:
name = "PC-spel"[standard]
profile_name = "Profil"
player_name = "Player"
profile_created = 1979-05-27T07: 32: 00-08: 00
ljud = sant
[standardinventar]
warrior = [["" svärd "," sköld ",], [" plate rustning "," plate helm ",],]
mage = [["personal", "trollstav",], ["mantel", "huva",],]
artiklar = ["hälsodryck", "motgift", "manadryck",]
[användare.profil]
namn = "profil1"
player_name = "player1"
class = "krigare"
[användare.inställningar]
ljud = falskt
För att konvertera ett ordbokobjekt till en TOML-formaterad sträng och lagra det i en fil kan du använda “toml.dump (dictionary_object, output_file) ”-metoden.
Slutsats
En TOML-fil i enklare termer är bara en INI-konfigurationsfil med bättre struktur och syntax, vilket underlättar tolkning och bättre läsbarhet. TOML-filformatet jämförs ofta med JSON-filformatet, men förutom dess användning i konfigurationsfiler har TOML inte mycket nytta. JSON, å andra sidan, är mycket mer mångsidigt och kan användas i olika användningsfall som kräver vilken datastruktur som helst.