Wie lese und schreibe INI-Datei mit Python3?

Ich muss eine INI- Datei mit Python3 lesen, schreiben und erstellen.

FILE.INI

default_path = "/path/name/" default_file = "file.txt" 

Python-Datei:

 # read file and if not exists ini = iniFile( 'FILE.INI' ) # Get and Print Config Line "default_path" getLine = ini.default_path # Print (string)/path/name print getLine # Append new line and if exists edit this line ini.append( 'default_path' , 'var/shared/' ) ini.append( 'default_message' , 'Hey! help me!!' ) 

UPDATE FILE.INI

 default_path = "var/shared/" default_file = "file.txt" default_message = "Hey! help me!!" 

5 Solutions collect form web for “Wie lese und schreibe INI-Datei mit Python3?”

Hier kann man etwas anfangen:

 import configparser config = configparser.ConfigParser() config.read('FILE.INI') print(config['DEFAULT']['path']) # -> "/path/name/" config['DEFAULT']['path'] = '/var/shared/' # update config['DEFAULT']['default_message'] = 'Hey! help me!!' # create with open('FILE.INI', 'w') as configfile: # save config.write(configfile) 

Weitere Informationen finden Sie in der offiziellen Konfigurationsdokumentation .

Hier ist ein komplettes Lese-, Update- und Schreibbeispiel.

Eingabedatei, test.ini

 [section_a] string_val = hello bool_val = false int_val = 11 pi_val = 3.14 

Arbeitscode

 try: from configparser import ConfigParser except ImportError: from ConfigParser import ConfigParser # ver. < 3.0 # instantiate config = ConfigParser() # parse existing file config.read('test.ini') # read values from a section string_val = config.get('section_a', 'string_val') bool_val = config.getboolean('section_a', 'bool_val') int_val = config.getint('section_a', 'int_val') float_val = config.getfloat('section_a', 'pi_val') # update existing value config.set('section_a', 'string_val', 'world') # add a new section and some values config.add_section('section_b') config.set('section_b', 'meal_val', 'spam') config.set('section_b', 'not_found_val', 404) # save to a file with open('test_update.ini', 'w') as configfile: config.write(configfile) 

Ausgabedatei, test_update.ini

 [section_a] string_val = world bool_val = false int_val = 11 pi_val = 3.14 [section_b] meal_val = spam not_found_val = 404 

Die ursprüngliche Eingabedatei bleibt unberührt.

http://docs.python.org/library/configparser.html

Die Standardbibliothek von Python könnte in diesem Fall hilfreich sein.

Der Standard ConfigParser benötigt normalerweise den Zugriff über config['section_name']['key'] , was keinen Spaß macht. Eine kleine Änderung kann Attributzugriff liefern:

 class AttrDict(dict): def __init__(self, *args, **kwargs): super(AttrDict, self).__init__(*args, **kwargs) self.__dict__ = self 

AttrDict ist eine Klasse, die aus dem dict abgeleitet ist, die den Zugriff über beide Wörterbuchschlüssel und den Attributzugriff ermöglicht: das heißt, ax is a['x']

Wir können diese Klasse in ConfigParser :

 config = configparser.ConfigParser(dict_type=AttrDict) config.read('application.ini') 

Und jetzt bekommen wir application.ini mit:

 [general] key = value 

wie

 >>> config._sections.general.key 'value' 

ConfigObj ist eine gute Alternative zu ConfigParser, die viel mehr Flexibilität bietet:

  • Verschachtelte Abschnitte (Unterabschnitte), auf jede Ebene
  • Listenwerte
  • Mehrzeilige Werte
  • String Interpolation (Substitution)
  • Integriert mit einem leistungsstarken Validierungssystem inklusive automatischer Typprüfung / Umwandlung von wiederholten Abschnitten und Ermöglichen von Standardwerten
  • Beim Schreiben von Konfigurationsdateien bewahrt ConfigObj alle Kommentare und die Reihenfolge der Mitglieder und Abschnitte
  • Viele nützliche Methoden und Optionen für die Arbeit mit Konfigurationsdateien (wie die 'reload' Methode)
  • Vollständige Unicode-Unterstützung

Es hat einige Unentschieden:

  • Du kannst das Trennzeichen nicht einstellen, es muss = … sein ( Pull Request )
  • Du kannst keine leeren Werte haben, gut können Sie aber sie sehen mochten: fuabr = anstatt nur fubar die seltsam und falsch aussieht.
  • Cmp () isnt woking für mich (python)
  • Welche Klassen können nicht untergeordnet werden?
  • Was macht --enable-optimisierungen bei der kompilierung von python?
  • Kodierung von Headern in MIMEText
  • Verwenden von win32com mit Multithreading
  • Python - Loop durch Dateien von bestimmten Erweiterungen
  • Kratzen von Google Finance (BeautifulSoup)
  • Wie man ein Skript mit erhöhtem Privileg auf Windows ausführt?
  • Python 3: UnboundLocalError: lokale Variable referenziert vor der Zuweisung [doppelte]
  • Python-Funktion, die Letter, Returns (0-Based) erhält Numerische Position innerhalb Alphabet
  • Except-clause löscht die lokale Variable
  • Python ist die beste Programmiersprache der Welt.