ConfigObj 'un-nest' 部分



我正在使用configobj 5.0.6保存许多用户定义的值,其中一些是嵌套的。我使用 local.ini来取代典型值。没有前端,因此用户根据需要编辑配置。为了使它更容易,更直观,有些值属于配置对象的"根"级别,但在local.ini文件的嵌套部分下方更容易理解。

我正在使用local.ini进行默认。该应用的流程提出了一个配置布局,该布局的非态值低于嵌套值。

# un-nested
title = my_title
# nested
[section_1]
val_s1 = val
[section_2]
val_s2 = val
# nested, but I want to be un-nested
val_2 = val

如预期的那样,此布局将val_2放在section_2下:

{
 'title': 'my_title',
 {'section_1': {'val_s1': 'val'}},
 {'section_2': {'val_s2': 'val'},
               {'val_2': 'val'}}
}

是否可以在下面的线路上定义 val_2 section_2,但在配置对象的"主"部分下访问?

我想最终得到这样的配置对象:

{
 'title': 'my_title',
 {'section_1': {'val_s1': 'val'}},
 {'section_2': {'val_s2': 'val'}},
 'val_2': 'val'
}

当然,配置字典的顺序并不重要;我感兴趣的是能够使用嵌套部分,但是从.ini中,将部分退出到其父母中。

我尚未测试,但是可疑嵌套从第一行开始,然后切片对象将起作用。即,写local.ini使其创建:

{
 'main_level':
  {
   'title': 'my_title',
   {'section_1': {'val_s1': 'val'}},
   {'section_2': {'val_s2': 'val'}},
   'val_2': 'val'
  }
}

然后,当我第一次实例化配置对象时,我可以使用config = config['main_level'],但是我想知道我是否只是缺少某种简单,正确的方法,而不是黑客。

根据文档,这是不可能的:

在外部部分中,单个值只能出现在任何小节之前。

最新更新