【问题标题】:ConfigObj 'un-nest' sectionsConfigObj 'un-nest' 部分
【发布时间】:2016-06-23 17:48:52
【问题描述】:

我使用 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'}}
}

是否可以在 section_2 下的一行 上定义 val_2,但在配置对象的“main”部分下访问它?

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

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

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

我还没有测试过,但怀疑从第一行开始嵌套 everything 然后切片配置对象会起作用。即,编写 local.ini 使其创建:

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

然后我可以在第一次实例化配置对象时使用config = config['main_level'],但我想知道我是否只是错过了一些简单、正确的方法,而不是破解。

【问题讨论】:

    标签: python python-2.7 configobj


    【解决方案1】:

    根据the documentation,这是不可能的:

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

    【讨论】:

    • 嗯,这是一个真正的嗡嗡声!感谢您的快速回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 2016-11-22
    • 2021-08-10
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多