ConfigParser使用的配置文件中DEFAULT部分的预期用途是什么?

时间:2020-03-06 14:38:09  来源:igfitidea点击:

对于简单的配置,我已经使用ConfigParser相当一段时间了。困扰我很长时间的一件事是DEFAULT部分。我不确定如何使用。我已经阅读了文档,但是我真的很想看到一些使用它的聪明示例,以及它如何影响文件中的其他部分(这确实说明了可能的事情)。

解决方案

我在这里搜索了" 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'

阅读链接页面,以了解在DEFAULT部分中使用变量替换来进一步简化INI文件的更多示例。