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
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.
+1 za używanie Pythona w przykładach. – refi64