Ich muss mit Python3 eine INI- Datei lesen, schreiben und erstellen .
FILE.INI
default_path = "/path/name/"
default_file = "file.txt"
Python-Datei:
# Read file and and create if it not exists
config = iniFile( 'FILE.INI' )
# Get "default_path"
config.default_path
# Print (string)/path/name
print config.default_path
# Create or Update
config.append( 'default_path', 'var/shared/' )
config.append( 'default_message', 'Hey! help me!!' )
AKTUALISIERTE DATEI.INI
default_path = "var/shared/"
default_file = "file.txt"
default_message = "Hey! help me!!"
python
python-3.x
ini
Olaf
quelle
quelle
[foobar]
.Antworten:
Dies kann etwas sein, mit dem man beginnen kann:
Weitere Informationen finden Sie in der offiziellen configparser-Dokumentation .
quelle
configparser.MissingSectionHeaderError
wenn bereitgestellte Beispieldateien ohne die richtigen Abschnittsüberschriften verwendet werden.Hier ist ein vollständiges Beispiel zum Lesen, Aktualisieren und Schreiben.
Eingabedatei, test.ini
Arbeitscode.
Ausgabedatei test_update.ini
Die ursprüngliche Eingabedatei bleibt unberührt.
quelle
read
Methode jetzt eine Liste der gelesenen Dateien / Dateien zurückgibt, aber nicht den Inhalthttp://docs.python.org/library/configparser.html
In diesem Fall kann die Standardbibliothek von Python hilfreich sein.
quelle
Der Standard
ConfigParser
erfordert normalerweise den Zugriff überconfig['section_name']['key']
, was keinen Spaß macht. Eine kleine Änderung kann den Attributzugriff ermöglichen:AttrDict
ist eine abgeleitete Klasse,dict
die den Zugriff sowohl über Wörterbuchschlüssel als auch über den Attributzugriff ermöglichta.x is a['x']
Wir können diese Klasse verwenden in
ConfigParser
:und jetzt kommen wir
application.ini
mit:wie
quelle
config._sections.general.key = "3"
diese Weise der interne Wert der Konfigurationsoption nicht geändert wird und daher nur für den schreibgeschützten Zugriff verwendet werden kann. Wenn nach dem.read()
Befehl die Konfiguration erweitert oder geändert wird (Optionen hinzufügen, Wertepaare für einige Abschnitte, -> Interpolation, was sehr wichtig sein kann), sollte diese Zugriffsmethode nicht verwendet werden! Auch jederconfig._sections["section"]["opt"]
private Zugriff umgeht die Interpolation und gibt die Rohwerte zurück!ConfigObj ist eine gute Alternative zu ConfigParser, die viel mehr Flexibilität bietet:
Es hat einige Nachteile:
=
… sein ( Pull-Anfrage )fuabr =
statt nur,fubar
was seltsam und falsch aussieht.quelle
Inhalt in meiner Datei backup_settings.ini
Python-Code zum Lesen
zum Schreiben oder Aktualisieren
Ausgabe
quelle