Python

So lesen und schreiben Sie TOML-Dateien mit Python

So lesen und schreiben Sie TOML-Dateien mit Python
TOML, kurz für „Tom's Obvious Minimal Language“, ist ein relativ neues und beliebtes Dateiformat, das sich auf minimale Semantik zum Schreiben von Konfigurationsdateien konzentriert. Das Dateiformat wurde von Tom Preston-Werner erstellt, dem ehemaligen CEO von GitHub. Zum Zeitpunkt der Erstellung dieses Artikels war der erste Release Candidate von Version 1.0.0 wurde markiert, die Spezifikation ist also mehr oder weniger abgeschlossen less. Dieser Artikel gibt eine kurze Einführung in das TOML-Dateiformat und beschreibt, wie dieses Dateiformat in Python-Anwendungen und -Skripten verwendet werden kann.

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 python3
toml 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=object at 0x7f3506b3d850>), 'sound': True, 'user': 'profile': 'name': 'profile1',
'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 python3
toml 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.

Top Oculus App Lab-Spiele
Wenn Sie Besitzer eines Oculus-Headsets sind, müssen Sie über Sideloading informiert sein. Sideloading ist der Prozess der Installation von Inhalten, ...
Top 10 Spiele zum Spielen auf Ubuntu
Die Windows-Plattform war eine der dominierenden Plattformen für Spiele aufgrund des großen Prozentsatzes von Spielen, die heute entwickelt werden, um...
Die 5 besten Arcade-Spiele für Linux
Heutzutage sind Computer ernsthafte Maschinen, die zum Spielen verwendet werden. Wenn du den neuen Highscore nicht bekommst, weißt du was ich meine. I...