2010-10-27 36 views
17

當調用ConfigParser.read時,您可以傳遞與配置文件的潛在位置相對應的字符串列表,並且該函數返回已成功讀取的文件的列表。使用Python的多個配置文件ConfigParser

加載多個配置文件時,具有重疊的部分/鍵的默認行爲是什麼?列表中以後的文件是否會覆蓋先前分析的值?整個部分是否被覆蓋或只是衝突的鍵?

+1

您是否嘗試過創建和讀取多個配置文件來查看會發生什麼? – snapshoe 2010-10-27 04:55:01

回答

19

讓周圍以測試它後,ConfigParser覆蓋每個連續的文件中的密鑰,其中讀取文件被傳遞到ConfigParser.read

在列表中的文件名的順序
4

剛剛確定的次序舉個更多細節的例子。

我可以創建以下兩個文件: 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 

然後,如果我運行下面的我可以看到的CONFIGS得到更新(輸出顯示爲在相應印刷聲明之後的評論):

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說,在這些文件中讀取由該文件名出現在給讀法列表中的順序確定的順序,
  • 鍵被後面的文件覆蓋,但這是在較低的選項級別而不是較高的級別級別完成的。這意味着如果您的選項在後面的文件中不存在,即使該部分確實發生,也會使用早期文件中的選項。
相關問題