2008-09-24 4 views
23

Ich habe ConfigParser schon seit einiger Zeit für einfache Konfigurationen verwendet. Eine Sache, die mich seit langem nervt, ist die DEFAULT-Sektion. Ich bin nicht wirklich sicher, was eine angemessene Verwendung ist. Ich habe die Dokumentation gelesen, aber ich würde gerne einige clevere Beispiele ihrer Verwendung sehen und wie sie sich auf andere Abschnitte in der Datei auswirkt (etwas, das wirklich die Art von Dingen veranschaulicht, die möglich sind).Was ist der beabsichtigte Gebrauch des DEFAULT-Abschnitts in Config-Dateien, die von ConfigParser verwendet werden?

Antwort

31

Ich fand eine Erklärung here durch googeln für "Windows Ini" "Standardabschnitt". Zusammenfassung: Was auch immer Sie in den Abschnitt [DEFAULT] setzen, wird an jeden anderen Abschnitt weitergegeben. Am Beispiel von der verlinkten Website, lassen Sie uns sagen, dass ich eine Config-Datei mit dem Namen TEST1.INI haben:

[host 1] 
lh_server=192.168.0.1 
vh_hosts = PloneSite1:8080 
lh_root = PloneSite1 

[host 2] 
lh_server=192.168.0.1 
vh_hosts = PloneSite2:8080 
lh_root = PloneSite2 

ich dies mit ConfigParser lesen:

>>> cp = ConfigParser.ConfigParser() 
>>> cp.read('test1.ini') 
['test1.ini'] 
>>> cp.get('host 1', 'lh_server') 
'192.168.0.1' 

Aber ich merke, dass lh_server ist das gleiche in beide Abschnitte; und in der Tat, ich merke, dass es für die meisten Hosts dasselbe sein wird, die ich hinzufügen könnte. So kann ich dies tun, als test2.ini:

[DEFAULT] 
lh_server=192.168.0.1 

[host 1] 
vh_root = PloneSite1 
lh_root = PloneSite1 

[host 2] 
vh_root = PloneSite2 
lh_root = PloneSite2 

Trotz der Abschnitte nicht lh_server Schlüssel hat, kann ich sie immer noch Zugang:

>>> cp.read('test2.ini') 
['test2.ini'] 
>>> cp.get('host 1', 'lh_server') 
'192.168.0.1' 

die verknüpfte Seite Lesen für ein weiteres Beispiel für Variable Ersetzen im Abschnitt DEFAULT, um die INI-Datei noch weiter zu vereinfachen.

+0

+1 für die Verwendung von Python in den Beispielen. – refi64