ConfigObj获取包含子节的节的列表的方法

时间:2011-02-11 14:24:02

标签: python parsing

我使用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 个答案:

答案 0 :(得分:4)

您可以使用方法walk并打印depth大于1的部分。

def gather_subsection(section, key):
    if section.depth > 1:
        print "Subsection " + section.name

config.walk(gather_subsection)

Documentation for depth

  

<强>深度

     

当前的嵌套级别   部分。

     

如果您创建一个新的ConfigObj并添加   部分,1将被添加到深度   部分之间的水平。

Documentation for walk