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.

HD-Remastered-Spiele für Linux, die noch nie zuvor eine Linux-Version hatten
Viele Spieleentwickler und -herausgeber entwickeln HD-Remaster alter Spiele, um die Lebensdauer des Franchise zu verlängern. Bitte Fans, die Kompatibi...
So verwenden Sie AutoKey zur Automatisierung von Linux-Spielen
AutoKey ist ein Desktop-Automatisierungsdienstprogramm für Linux und X11, programmiert in Python 3, GTK und Qt. Mithilfe der Skript- und MACRO-Funktio...
So zeigen Sie den FPS-Zähler in Linux-Spielen an
Linux-Gaming bekam einen großen Schub, als Valve 2012 die Linux-Unterstützung für den Steam-Client und seine Spiele ankündigte. Seitdem haben viele AA...