Подтвердить что ты не робот

Каково намеренное использование раздела DEFAULT в конфигурационных файлах, используемых ConfigParser?

Я использовал ConfigParser довольно долго для простых конфигураций. Одна вещь, которая долгое время прослушивала меня, - это раздел DEFAULT. Я не совсем уверен, что нужно использовать. Я прочитал документацию, но мне бы хотелось увидеть некоторые умные примеры ее использования и то, как она влияет на другие разделы в файле (что действительно иллюстрирует возможные вещи).

4b9b3361

Ответ 1

Я нашел объяснение здесь путем googling для "windows ini" "default section". Резюме: все, что вы помещаете в раздел [ПО УМОЛЧАНИЮ], распространяется на все остальные разделы. Используя пример со связанного веб-сайта, скажем, у меня есть файл конфигурации, называемый 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

Я могу прочитать это с помощью ConfigParser:

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

Но я замечаю, что lh_server одинаково в обоих разделах; и, действительно, я понимаю, что это будет одинаково для большинства хостов, которые я мог бы добавить. Поэтому я могу сделать это, как 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

Несмотря на то, что разделы, не имеющие ключей lh_server, я все равно могу получить к ним доступ:

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

Прочтите связанную страницу для дальнейшего примера использования замены переменных в разделе DEFAULT, чтобы еще больше упростить INI файл.