Ich habe ein Befehlszeilenskript, das ich mit vielen Argumenten ausführe. Ich bin jetzt an einem Punkt angelangt, an dem ich zu viele Argumente habe, und ich möchte auch einige Argumente in Wörterbuchform haben.
Um die Dinge zu vereinfachen, möchte ich das Skript stattdessen mit einer Einstellungsdatei ausführen. Ich weiß nicht genau, welche Bibliotheken zum Parsen der Datei verwendet werden sollen. Was ist die beste Vorgehensweise dafür? Ich könnte natürlich selbst etwas herausschlagen, aber wenn es eine Bibliothek dafür gibt, bin ich ganz Ohr.
Ein paar "Forderungen":
- Anstatt zu verwenden,
pickle
möchte ich, dass es sich um eine einfache Textdatei handelt, die leicht gelesen und bearbeitet werden kann. - Ich möchte in der Lage sein, wörterbuchähnliche Daten hinzuzufügen, dh eine Form der Verschachtelung sollte unterstützt werden.
Eine vereinfachte Pseudo-Beispieldatei:
truck:
color: blue
brand: ford
city: new york
cabriolet:
color: black
engine:
cylinders: 8
placement: mid
doors: 2
Antworten:
Sie können ein reguläres Python-Modul haben, z. B. config.py, wie folgt:
und benutze es so:
quelle
.py
Dateien ausführbar sind, sodass beim Laden der Konfiguration jede Art von Code ausgeführt werden kannimport
. Das ist aus Sicherheitsgründen nicht akzeptabel.ast.literal_eval
? docs.python.org/3/library/ast.html#ast.literal_evalDie von Ihnen angegebene Beispielkonfiguration ist tatsächlich eine gültige YAML . Tatsächlich erfüllt YAML alle Ihre Anforderungen, ist in einer Vielzahl von Sprachen implementiert und äußerst menschenfreundlich. Ich würde Ihnen wärmstens empfehlen, es zu verwenden. Das PyYAML-Projekt bietet ein schönes Python-Modul, das YAML implementiert.
Die Verwendung des Yaml-Moduls ist äußerst einfach:
quelle
pip3 install pyyaml
es für den Import in Python-Skripte vorzubereiten.Ich fand dies am nützlichsten und am einfachsten zu verwendenden https://wiki.python.org/moin/ConfigParserExamples
Sie erstellen einfach eine "myfile.ini" wie:
Und rufen Sie die Daten ab wie:
quelle
Yaml und Json sind die einfachsten und am häufigsten verwendeten Dateiformate zum Speichern von Einstellungen / Konfigurationen. PyYaml kann zum Parsen von Yaml verwendet werden. Json ist bereits ab 2.5 Teil von Python. Yaml ist eine Obermenge von Json. Json löst die meisten Anwendungsfälle mit Ausnahme von mehrzeiligen Zeichenfolgen, bei denen ein Escapezeichen erforderlich ist. Yaml kümmert sich auch um diese Fälle.
quelle