Beispiel für eine TOML-Konfigurationsdatei
Die Spezifikation für TOML beinhaltet die Verwendung von Schlüssel-Wert-Paaren, bei denen die Groß-/Kleinschreibung beachtet wird. Die Tasten befinden sich auf der linken Seite, die Werte auf der rechten Seite. diese Begriffe werden auf beiden Seiten durch ein Gleichheitszeichen getrennt. Die Schlüssel-Wert-Paare sind identisch mit der Variablendeklarationssyntax, die Sie in den meisten Programmiersprachen sehen werden. Sie können auch Tabellen und Untertabellen (Abschnitte und Unterabschnitte) in eckigen Klammern definieren, um Schlüssel-Wert-Paare für eine verbesserte Analyselogik und Anwendung in Ihren Programmen organisiert zu halten. Werte können vom Typ String, Integer, Float, Boolean, Array sowie Zeit- und Datumstypen sein. TOML ermöglicht die Verwendung der Punktsyntax, sodass Sie eine Tabelle (einen Abschnitt) als „Tabelle“ definieren können.Untertabelle“ oder ein Schlüssel als „Schlüssel.Bezeichner“ ebenfalls. Die für eine TOML-Datei verwendete Dateierweiterung ist .toml. Unten ist ein abgekürztes Beispiel für eine TOML-Datei:
name = "PC-Spiel"[Standard]
profile_name = "Profil"
player_name = "Spieler"
profile_created = 1979-05-27T07:32:00-08:00
Laut = wahr
[Benutzer]
[Benutzer.Profil]
name = "profil1"
player_name = "player1"
Klasse = "Krieger"
[Benutzer.die Einstellungen]
Ton = falsch
[default_inventory]
Krieger = [ ["Schwert", "Schild"], ["Plattenrüstung", "Plattenhelm"] ]
Magier = [["Stab", "Zauberstab"], ["Robe", "Haube"]]
Artikel = [
"Gesundheitstrank",
"Gegenmittel",
"Manatrank"
]
Als Referenz ist die gleiche Konfigurationsdatei unten in JSON geschrieben:
"name": "PC-Spiel",
"Standard":
"profile_name": "Profil",
"player_name": "Spieler",
"profile_created": "1979-05-27T15:32:00.000Z",
"sound": wahr
,
"Benutzer":
"Profil":
"name": "profile1",
"player_name": "player1",
"Klasse": "Krieger"
,
"die Einstellungen":
"sound": falsch
,
"default_inventory":
"Krieger": [
[
"Schwert",
"Schild"
],
[
"Plattenrüstung",
"Plattenhelm"
]
],
"magier": [
[
"Mitarbeiter",
"Zauberstab"
],
[
"Kleid",
"Kapuze"
]
],
"Artikel": [
"Gesundheitstrank",
"Gegenmittel",
"Manatrank"
]
Unterschiede zwischen JSON- und INI-Dateiformaten
TOML ähnelt in vielerlei Hinsicht JSON- und INI-Formaten, mit einigen Unterschieden, die bestimmen können, welches Dateiformat Sie verwenden möchten. Das TOML-Dateiformat betont die Lesbarkeit für den Menschen und erscheint viel sauberer zu lesen. INI-Dateien unterstützen keine verschachtelten Abschnitte und verschachtelten Schlüssel-Wert-Paare. Im Gegensatz zu JSON erlaubt TOML Kommentare (mit dem #-Symbol). Lange verschachtelte Daten in einer JSON-Datei können in wenigen Zeilen in TOML geschrieben werden.
Es kann jedoch verwirrend sein, die Struktur in langen verschachtelten Hierarchien in TOML richtig zu identifizieren, während die Struktur in JSON viel klarer ist, auch wenn die verschachtelten Daten ausführlich erscheinen. TOML ist in erster Linie für Konfigurationsdateien und nicht für große strukturierte Datensätze konzipiert, während JSON für jede Größenordnung strukturierter Daten geeignet ist.
Das Python-TOML-Modul
Python-Standardbibliotheken bieten zum Zeitpunkt der Erstellung dieses Artikels derzeit keine Unterstützung für das Parsen von TOML-Daten. Dies kann sich nach der TOML-Version 1 ändern.0.0 wird freigegeben. Vorerst müssen Sie ein Python-Modul eines Drittanbieters namens . verwenden toml. Sie können dieses Modul in Ubuntu mit einem der folgenden Befehle installieren:
$ sudo apt install python3-toml$ pip3 toml installieren
Analysieren einer TOML-Datei mit dem Python TOML-Modul
Das Parsen einer TOML-Datei mit dem python3-toml-Modul ist ziemlich einfach. Sie können entweder die „toml.load“-Methode, um die gesamte Datei zu parsen, oder Sie können die „toml.lädt“-Methode, um ein bestimmtes TOML-formatiertes Schlüssel-Wert-Paar zu analysieren. Angenommen eine „Daten“.toml“-Datei die im obigen Beispiel erwähnten TOML-formatierten Strings enthält, analysiert der folgende Code TOML-Daten und druckt sie als Python-Wörterbuch:
#!/usr/bin/env python3toml importieren
drucken (toml.lade Daten.toml"))
Das Ausführen des obigen Codes erzeugt die folgende Ausgabe:
'name': 'PC-Spiel', 'default': 'profile_name': 'Profil', 'player_name': 'Player','profile_created': Datum/Uhrzeit.datetime(1979, 5, 27, 7, 32, tzinfo=
'player_name': 'player1', 'class': 'warrior', 'settings': 'sound': False,
'default_inventory': 'warrior': [['Schwert', 'Schild'], ['Plattenrüstung', 'Plattenhelm']],
'mage': [['staff', 'zauberstab'], ['robe', 'hood']], 'items': ['health potion', 'antidote',
'Manatrank']
Da Sie nun über ein Python-Wörterbuchobjekt verfügen, können Sie eine beliebige Logik in Ihrem Programm implementieren, um die Wörterbuchdaten zu verarbeiten.
Ein Python-Wörterbuch als TOML-formatierte Daten ausgeben
Ein Python-Wörterbuch kann mit dem Befehl „toml“ in TOML-formatierte Strings gedumpt werden.dumps“-Methode, oder das Objekt kann mit „toml . in eine Datei gedumpt werden.Dump“-Methode. Das folgende Beispiel konvertiert ein Wörterbuchobjekt in nito TOML-formatierte Zeichenfolgen:
#!/usr/bin/env python3toml importieren
Daten = toml.lade Daten.toml")
drucken (toml.Dumps (Daten))
Das Ausführen des obigen Codes erzeugt die folgende Ausgabe:
name = "PC-Spiel"[Standard]
profile_name = "Profil"
player_name = "Spieler"
profile_created = 1979-05-27T07:32:00-08:00
Laut = wahr
[default_inventory]
Krieger = [ [ "Schwert", "Schild",], [ "Plattenrüstung", "Plattenhelm",],]
Magier = [ [ "Stab", "Zauberstab",], [ "Robe", "Haube",],]
items = [ "Heiltrank", "Gegenmittel", "Manatrank",]
[Benutzer.Profil]
name = "profil1"
player_name = "player1"
Klasse = "Krieger"
[Benutzer.die Einstellungen]
Ton = falsch
Um ein Wörterbuchobjekt in einen TOML-formatierten String umzuwandeln und in einer Datei zu speichern, können Sie das „toml“.dump(dictionary_object, output_file)“-Methode.
Fazit
Einfacher ausgedrückt ist eine TOML-Datei nur eine INI-Konfigurationsdatei mit besserer Struktur und Syntax, die eine einfachere Analyse und bessere Lesbarkeit ermöglicht. Das TOML-Dateiformat wird oft mit dem JSON-Dateiformat verglichen, aber abgesehen von seiner Verwendung in Konfigurationsdateien hat TOML nicht viel Nutzen. JSON hingegen ist viel vielseitiger und kann in verschiedenen Anwendungsfällen verwendet werden, die jeden Datenstrukturtyp erfordern requiring.