[英]When reading multiple config files, ConfigParser overwrites previous files, why?
所以我想首先說我一直在尋找SO的答案,並且找不到任何有用的東西。 我也查看了Python的文檔,但未能找到有用的東西。 我的上一個問題有點懶,收到負面反饋,所以我盡我所能在這里提出一個簡單明了的問題。 一如既往,提前感謝您的幫助!
那么,有人可以解釋我在Python的ConfigParser中遇到的奇怪行為。 我有兩個不同的配置文件,每個文件都有一個Section 1
。 這兩個文件具有不同數量的選項,但覆蓋的選項數量較少。 這是代碼和輸出:
第一個配置文件:test1.ini
[Section 1]
Option 1 : One
Option 2 : Two
Option 3 : None
Option 4 : Four
第二個配置文件:test2.ini
[Section 1]
Option 1 : One
Option 2 : None
Option 3 : Three
讀取配置文件的驅動程序
from ConfigParser import SafeConfigParser
parser = SafeConfigParser()
def ParseThis(file, section):
parser.read(file)
for option in parser.options(section):
print "\t" + option
try:
if parser.get(section, option) != 'None':
print option + ": " + parser.get(section, option)
else:
print option + ": Option doesn't exist"
except:
print option + ": Something went wrong"
print "First File:"
print "Section 1"
ParseThis('test2.ini', 'Section 1')
print "\n"
print "Second File: "
print "Section 1"
ParseThis('test1.ini', 'Section 1')
print "\n"
print "First File: "
print "Section 1"
ParseThis('test2.ini', 'Section 1')
這是我得到的輸出,這沒有任何意義。
First File:
Section 1
option 1
option 1: One
option 2
option 2: Option doesn't exist
option 3
option 3: Three
Second File:
Section 1
option 1
option 1: One
option 2
option 2: Two
option 3
option 3: Option doesn't exist
option 4
option 4: Four
First File:
Section 1
option 1
option 1: One
option 2
option 2: Option doesn't exist
option 3
option 3: Three
option 4 <== why this line?
option 4: Four <== why this line?
單個ConfigParser實例用於表示單個配置,該配置可以以“優先順序”從多個文件派生,以便后面的文件覆蓋之前的文件。 文檔沒有說明這一點,但確實說:
其設計使您可以指定潛在配置文件位置的列表(例如,當前目錄,用戶的主目錄和某些系統范圍的目錄),並且將讀取列表中的所有現有配置文件。
如果您希望將讀取的配置保持獨立,則需要為每個配置創建單獨的SafeConfigParser
實例。 在函數內移動parser = SafeConfigParser()
行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.