Как предполагается использовать раздел DEFAULT в файлах конфигурации, используемых ConfigParser? - PullRequest
28 голосов
/ 24 сентября 2008

Я довольно долго использовал ConfigParser для простых конфигов. Одна вещь, которая меня долго раздражала, это раздел ПО УМОЛЧАНИЮ. Я не совсем уверен, какое уместное использование. Я прочитал документацию, но мне бы очень хотелось увидеть несколько умных примеров его использования и того, как он влияет на другие разделы файла (что действительно иллюстрирует возможные варианты).

1 Ответ

36 голосов
/ 24 сентября 2008

Я нашел объяснение здесь , прибегая к помощи "windows ini" "раздел по умолчанию". Резюме: все, что вы помещаете в раздел [DEFAULT], распространяется на все остальные разделы. Используя пример со ссылочного сайта, допустим, у меня есть файл конфигурации с именем 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'

Прочитайте связанную страницу для дальнейшего примера использования подстановки переменных в разделе ПО УМОЛЧАНИЮ, чтобы еще больше упростить файл INI.

...