2012-07-12 53 views
0

我有一個cfg文件,它有10個部分......每個部分都有類似的字段。配置解析器python

[sec1] 
id:... 
[sec2] 
id.. 

... 

所以現在..我做這樣的事情..

config_instance = ConfigParser.ConfigParser() 
id1 = config_instance.get("sec1","id") 
id2 = config_instance.get("sec2","id") 

有沒有更好更Python的方式來做到這一點..它自動讀取所有部分和提取此功能?

感謝

+1

假設Python 2.X,除非你需要向後兼容現有的代碼,你應該使用'ConfigParser.SafeConfigParser'。 – mhawke 2012-07-13 00:38:12

回答

2

如果所有部分都有它(或者,如果你知道有一個ID字段節的列表),你可以這樣做:

sections=config_instance.sections() 
ids=[config_instance.get(sec,'id') for sec in sections] 

然後你可以,如果解壓它們你想要的,但我更喜歡列表:

id1,id2,... = ids 

或者,你可以做一個字典(蟒蛇2.7+):

ids={ sec:config_instance.get(sec,'id') for sec in sections } 
print ids['sec1'] 

這實際上只取決於你想怎麼做。

1

製作一個字典,其中的部分作爲鍵和ID作爲值。

config = ConfigParser.ConfigParser() 
ids = {} 
for section in config.sections(): 
    if config.has_option(section, "id"): 
     ids[section] = config.get(section, "id")