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. Jakie jest zamierzone użycie wyjątku IllegalStateException?
- 2. Wiele plików konfiguracyjnych z Python ConfigParser
- 3. redefiniować obiekt spring.net w wielu plikach konfiguracyjnych
- 4. Co jest dobrą alternatywą do umieszczania haseł w plikach konfiguracyjnych?
- 5. Jakie jest znaczenie "@include" w plikach .css?
- 6. CGRectIntegral jakie jest jego użycie?
- 7. Włączanie IntelliSense dla niestandardowych sekcji w plikach .config
- 8. Liczba wątków używanych przez Intel TBB
- 9. ConfigParser z elementami Unicode
- 10. jakie jest znaczenie wyrównywania początku sekcji?
- 11. Android: zamierzone użycie fragmentów z usługami, okien dialogowych itp.
- 12. Lista domyślnych konwerterów używanych przez WPF?
- 13. Jakie korzyści daje użycie ApplicationContext?
- 14. Informacje o mechanizmach debugowania używanych przez debugger
- 15. Jakie jest znaczenie i użycie __stdcall?
- 16. Jakie jest użycie klasy wiersza z Bootstrap?
- 17. Jakie jest prawidłowe użycie funkcji Kontrolki bezpieczeństwa()?
- 18. Dodaj zamierzone opóźnienie w wyrażeniu
- 19. Błędem jest użycie sekcji zarejestrowanej jako allowDefinition = „MachineToApplication”
- 20. Jakie jest prawidłowe użycie funkcji res.render() i res.redirect() w Expressie?
- 21. Jakie jest dokładne użycie klas w pakiecie java.util.concurrent.atomic w Javie?
- 22. Jakie jest prawidłowe użycie XmlNode.SelectSingleNode (ciąg xpath) w języku C#?
- 23. Generowanie plików XML używanych przez JUnit Reports
- 24. Znajdowanie portów TCP używanych przez aplikację
- 25. Zarządzanie przez subversion plików konfiguracyjnych projektu
- 26. Python, ConfigParser: Czym jest "magiczna interpolacja"
- 27. Określanie liczby bajtów używanych przez zmienną
- 28. Ograniczenie liczby rdzeni używanych przez erlang
- 29. Jakie jest użycie/znaczenie "#!/Bin/sh" w skryptach powłoki?
- 30. Flagi w plikach Cabal
+1 za używanie Pythona w przykładach. – refi64