2008-09-24 12 views
23

Używam ConfigParser od dłuższego czasu do prostych konfiguracji. Jedną z rzeczy, która przez długi czas mnie dręczyła, jest sekcja DEFAULT. Nie jestem pewien, jaki jest odpowiedni użytek. Czytałem dokumentację, ale naprawdę chciałbym zobaczyć kilka sprytnych przykładów jej użycia i wpływu na inne sekcje w pliku (coś, co naprawdę ilustruje tego, co jest możliwe).Jakie jest zamierzone użycie sekcji DEFAULT w plikach konfiguracyjnych używanych przez program ConfigParser?

Odpowiedz

31

Znalazłem wytłumaczenie here przez szukanie w Google dla "windows ini" "domyślnej sekcji". Podsumowanie: wszystko, co umieścisz w sekcji [DEFAULT] zostanie przeniesione do każdej innej sekcji. Korzystając z przykładu z połączonej stronie, powiedzmy Mam plik konfiguracyjny o nazwie test1.ini:

[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 

mogę przeczytać to, używając ConfigParser:

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

Ale widzę, że lh_server jest taka sama w obie sekcje; i, w rzeczy samej, zdaję sobie sprawę, że tak samo będzie w przypadku większości hostów, które mogę dodać. Więc mogę to zrobić, jak 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 

pomimo sekcjach nie posiadających klucze lh_server, mogę nadal korzystać z nich:

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

Czytaj połączoną aktualizacja kolejny przykład wykorzystania zmiennej podstawianie w sekcji DEFAULT, aby jeszcze bardziej uprościć plik INI.

+0

+1 za używanie Pythona w przykładach. – refi64

Powiązane problemy