用ConfigObj获取包含子部分的部分列表的方法
我使用ConfigObj来解析配置文件,格式如下:
[APACHE]
init_script=
...
[TOMCAT]
[[TOMCAT1]]
init_script =
[[TOMCAT2]]
init_script =
在某些情况下,[TOMCAT]部分可能会有嵌套的子部分,有时候则没有——只有一个根实例[TOMCAT]。
我刚接触Python,所以我很好奇,有没有方便的方法可以遍历配置文件,只获取那些包含嵌套子部分的元素。
目前我使用的是这样的方式:
def is_section(config_section):
"""
Check that config elemet is a section
"""
try:
config_section.keys()
except AttributeError:
return False
else:
return True
onfig = ConfigObj(config_file,list_values=True,interpolation=True)
sections = config.keys()
for section in sections:
if is_section(config[section]):
for subsection in config[section]:
if is_section(config[section][subsection]):
print "Subsection ", subsection
1 个回答
4
你可以使用 walk
这个方法,打印出深度大于一的部分。
def gather_subsection(section, key):
if section.depth > 1:
print "Subsection " + section.name
config.walk(gather_subsection)
深度
当前部分的嵌套层级。
如果你创建一个新的 ConfigObj 并添加部分,那么在部分之间,深度层级会增加 1。