So lesen und schreiben Sie Toml -Dateien mit Python

So lesen und schreiben Sie Toml -Dateien mit Python
Toml, kurz für „Toms offensichtliche minimale Sprache“, ist ein relativ neues und beliebtes Dateiformat, das sich auf minimale Semantik zum Schreiben von Konfigurationsdateien konzentriert. Das Dateiformat wurde von Tom Preston-Werner, dem ehemaligen CEO von GitHub, erstellt. Ab dem Zeitpunkt wurde dieser Artikel geschrieben, der erste Veröffentlichungskandidat von Version 1.0.0 wurde markiert, sodass die Spezifikation mehr oder weniger abgeschlossen ist. Dieser Artikel enthält eine kurze Einführung in das TOML -Dateiformat und beschreibt, wie dieses Dateiformat in Python -Anwendungen und Skripten verwendet werden kann.

Beispiel für TOML -Konfigurationsdatei

Die Spezifikation für TOML umfasst die Verwendung von Fall-sensitiven Schlüsselwertpaaren. Tasten sind auf der linken Seite, während die Werte auf der rechten Seite stehen; Diese Begriffe werden zu beiden Seiten durch ein Gleichen Zeichen getrennt. Die Schlüsselwertpaare sind identisch mit der Syntax der variablen Deklaration, die Sie in den meisten Programmiersprachen sehen werden. Sie können auch Tabellen und Untertabelle (Abschnitte und Unterabschnitte) in Quadratklammern definieren, um die Schlüsselwertpaare für eine verbesserte Parsen-Logik und -anwendung in Ihren Programmen organisiert zu halten. Werte können aus String-, Ganzzahl-, Float-, Boolean-, Array- und Zeit- und Datumsarten sein. TOML ermöglicht die Verwendung der DOT -Syntax, damit Sie eine Tabelle (Abschnitt) als „Tabelle“ definieren können.Subtable “oder ein Schlüssel als„ Schlüssel.auch Kennung “. Die für eine TOML -Datei verwendete Dateierweiterung ist .Toml. Unten finden Sie ein abgekürztes Beispiel einer TOML -Datei:

Name = "PC -Spiel"
[Standard]
Profil_name = "Profil"
Player_name = "Player"
Profil_Created = 1979-05-27T07: 32: 00-08: 00
Sound = wahr
[Benutzer]
[Benutzer.Profil]
Name = "Profil1"
Player_name = "Player1"
class = "Warrior"
[Benutzer.Einstellungen]
Sound = falsch
[default_inventory]
Krieger = ["Schwert", "Schild"], ["Plattenpanzerung", "Plattenhelm"]]
MAGE = ["Staff", "Zauberstab"], ["Robe", "Hood"]]
items = [
"Gesundheitstrank",
"Gegenmittel",
"Mana Trank"
]

Als Referenz ist dieselbe Konfigurationsdatei in JSON unten geschrieben:


"Name": "PC -Spiel",
"Standard":
"Profil_name": "Profil",
"Player_name": "Spieler",
"Profil_Created": "1979-05-27T15: 32: 00.000z ",
"Sound": wahr
,
"Benutzer":
"Profil":
"Name": "Profil1",
"Player_name": "Player1",
"Klasse": "Krieger"
,
"Einstellungen":
"Sound": Falsch

,
"default_inventory":
"Krieger": [
[
"Schwert",
"Schild"
],
[
"Plattenrüstung",
"Plattenhelm"
]
],
"Magier": [
[
"Mitarbeiter",
"Zauberstab"
],
[
"Kleid",
"Haube"
]
],
"Artikel": [
"Gesundheitstrank",
"Gegenmittel",
"Mana Trank"
]

Unterschiede zwischen JSON- und INI -Dateiformaten

Toml ähnelt in vielerlei Hinsicht den Formaten von JSON- und INI -Formaten, wobei einige Unterschiede bestimmen können, welches Dateiformat Sie verwenden möchten. Das TOML -Dateiformat betont die menschliche Lesbarkeit und erscheint viel sauberer zum Lesen. INI-Dateien unterstützen keine verschachtelten Abschnitte und verschachtelten Schlüsselwertpaare. Im Gegensatz zu JSON erlaubt Toml Kommentare (mit dem # Symbol). Lange verschachtelte Daten in einer JSON -Datei können in nur wenigen Zeilen in TOML geschrieben werden.

Es kann jedoch verwirrend sein, die Struktur in langen verschachtelten Hierarchien in TOML ordnungsgemäß zu identifizieren, während die Struktur in JSON viel klarer ist, obwohl die verschachtelten Daten möglicherweise ausführlich erscheinen. TOML wurde hauptsächlich für Konfigurationsdateien und nicht für große strukturierte Datensätze entwickelt, während JSON für jede Skala strukturierter Daten geeignet ist.

Das Python Toml -Modul

Python Standardbibliotheken unterstützen derzeit keine Unterstützung für das Parsen von TOML -Daten zum Zeitpunkt des Schreibens dieses Artikels. Dies kann sich nach TOML Version 1 ändern.0.0 wird freigegeben. Vorerst müssen Sie ein Python -Modul von Drittanbietern namens Toml verwenden. Sie können dieses Modul in Ubuntu mit einem der folgenden Befehle installieren:

$ sudo apt installieren python3-toml
$ pip3 TOML installieren

Analyse 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 verwenden.Laden Sie die Methode, um die gesamte Datei zu analysieren, oder Sie können den „Toml.Last ”Methode, um ein bestimmtes Schlüsselwertpaar mit TOML-formatiert zu analysieren. Annahme von Daten annehmen.Die Datei von Toml ”enthält die im obigen Beispiel erwähnten TOML -Format -Zeichenfolgen. Der folgende Code wird Toml -Daten als Python -Wörterbuch analysiert und druckt:

#!/usr/bin/env python3
Toml importieren
Druck (Toml.lade Daten.toml "))

Das Ausführen des obigen Codes erzeugt die folgende Ausgabe:

'Name': 'PC -Spiel', 'Standard': 'Profil_Name': 'Profil', 'Player_Name': 'Player',
'Profil_Created': DateTime.DateTime (1979, 5, 27, 7, 32, Tzinfo =Objekt unter 0x7f3506b3d850>), 'Sound': true, 'Benutzer': 'Profil': 'Name': 'Profil1' ',
'Player_Name': 'Player1', 'Klasse': 'Warrior', 'Einstellungen': 'Sound': false,
'Default_inventory': 'Warrior': ['Sword', 'Shield'], ['Plattenpanzer', 'Plattenhelm']]],
'Mage': ['Staff', 'Wand'], ['Robe', 'Hood'], 'Gegenstände': ['Health Potion', 'Gegenmittel' ',
'Mana Potion']

Nachdem Sie ein Python Dictionary -Objekt haben, können Sie jede Logik in Ihrem Programm implementieren, um die Wörterbuchdaten zu verarbeiten.

Dumpeln eines Python -Wörterbuchs als TOML -formatierte Daten

Ein Python -Wörterbuch kann mit dem „Toml.Dumps ”-Methode oder das Objekt kann mit" Toml "in eine Datei abgeladen werden.Müllmethode. Im folgenden Beispiel werden ein Wörterbuch -Objekt Nito Toml formatierte Zeichenfolgen umwandeln:

#!/usr/bin/env python3
Toml importieren
Data = Toml.lade Daten.toml ")
Druck (Toml.Dumps (Daten))

Das Ausführen des obigen Codes erzeugt die folgende Ausgabe:

Name = "PC -Spiel"
[Standard]
Profil_name = "Profil"
Player_name = "Player"
Profil_Created = 1979-05-27T07: 32: 00-08: 00
Sound = wahr
[default_inventory]
Krieger = ["Schwert", "Schild",], ["Plattenrüstung", "Plattenhelm",],],]
MAGE = ["Staff", "Zauberstab",], ["Robe", "Hood",],],]
Artikel = ["Gesundheitsrank", "Antidote", "Mana Trank",]
[Benutzer.Profil]
Name = "Profil1"
Player_name = "Player1"
class = "Warrior"
[Benutzer.Einstellungen]
Sound = falsch

Um ein Wörterbuchobjekt in eine TOML -formatierte Zeichenfolge umzuwandeln und in einer Datei zu speichern, können Sie das „Toml.Dump (Dictionary_Object, Output_file) ”Methode.

Abschluss

Eine TOML -Datei in einfacherer Begriff. Das TOML -Dateiformat wird häufig mit dem JSON -Dateiformat verglichen. Abgesehen von der Verwendung in Konfigurationsdateien hat TOML jedoch nicht viel Dienstprogramm. JSON hingegen ist viel vielseitiger und kann in verschiedenen Anwendungsfällen verwendet werden, die einen Datenstrukturart benötigen.