【问题标题】:Multiple configuration files with Python ConfigParser使用 Python ConfigParser 的多个配置文件
【发布时间】:2011-05-01 02:32:12
【问题描述】:

当调用 ConfigParser.read 时,您可以传递与配置文件的潜在位置相对应的字符串列表,并且该函数会返回成功读取的那些文件的列表。

加载具有重叠部分/键的多个配置文件时,默认行为是什么?列表中后面的文件会覆盖早期文件解析的值吗?是整个部分都被覆盖还是只是键冲突?

【问题讨论】:

  • 您是否尝试过创建和读取多个配置文件以查看会发生什么?

标签: python configuration


【解决方案1】:

经过测试,ConfigParser 会用每个连续的文件覆盖键,读取文件的顺序由传递给 ConfigParser.read 的列表中文件名的顺序决定

【讨论】:

    【解决方案2】:

    只是举个例子来了解更多细节。

    我可以创建以下两个文件: config1.ini

    # ** config1.ini **
    [shared]
    prop_uniue1 = 1
    prop_shared = 10
    
    [unique1]
    test_unique = 101
    

    和config2.ini:

    # ** config2.ini **
    [shared]
    prop_uniue2 = 2
    prop_shared = 14
    
    [unique2]
    test_unique = 102
    

    然后,如果我运行以下命令,我可以看到配置是如何更新的(输出在相应的打印语句之后显示为 cmets):

    import ConfigParser
    
    config = ConfigParser.ConfigParser()
    config.read(['config1.ini', 'config2.ini'])
    
    
    print config.sections() # ['shared', 'unique1', 'unique2']
    print config.get("shared", "prop_uniue1")  # 1
    print config.get("shared", "prop_shared")  # 14
    print config.get("unique1", "test_unique") # 101
    
    print config.get("shared", "prop_uniue2")  # 2
    print config.get("unique2", "test_unique") # 102
    

    所以总结一下:

    • 作为crasic says,文件被读取的顺序由文件名出现在赋予读取方法的列表中的顺序决定,
    • 后面的文件会覆盖这些键,但这是在较低的选项级别而不是较高的节级别完成的。这意味着,如果您的选项没有出现在后面的文件中,即使该部分确实出现了,那么将使用早期文件中的选项。

    【讨论】:

      猜你喜欢
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      相关资源
      最近更新 更多