configparser 中的多维字典

Nob*_*ion 8 python dictionary configparser

是否可以使用缩进使用 Python 'configparser' 存储多维字典(3 深)?解决方法是拆分键值,但想知道是否有一种干净的方法可以直接导入字典。

不起作用 - 在 CONFIGPARSER 中使用子选项缩进

    [选项]
        [子选项]
        选项 1 = 值 1
        选项 2 = 值 2
        选项 3 = 值 3

作品 - 拆分用于子选项值

    [选项]
    SUB-OPTION = 'option1, value1',    
                  '选项2,值2',
                  '选项3,值3'

字典值

    dict['OPTIONS']['SUB-OPTION'] = {
        选项1:值1,
        选项2:值2,
        选项3:值3,
    }

Lir*_*aro 5

ASAIK,有一个这种格式的嵌套配置文件。

我建议使用类似 json 的配置文件:

{
 "OPTIONS": {
   "SUB-OPTIONS": {
     "option1" : value1,
     "option2" : value2,
     "option3" : value3,
   }
 }
}
Run Code Online (Sandbox Code Playgroud)

然后在代码中使用:

from ast import literal_eval
with open("filename","r") as f:
 config = literal_eval(f.read())
Run Code Online (Sandbox Code Playgroud)

编辑

或者,您可以使用 YAML(与 PyYAML)作为一个很好的配置文件。

配置文件如下:

{
 "OPTIONS": {
   "SUB-OPTIONS": {
     "option1" : value1,
     "option2" : value2,
     "option3" : value3,
   }
 }
}
Run Code Online (Sandbox Code Playgroud)

可以使用以下方式解析:

import yaml
with open(filepath, 'r') as f:
    conf = yaml.safe_load(f)
Run Code Online (Sandbox Code Playgroud)

然后您可以像在以下中一样访问数据dict

conf['option1']['suboption1']['value1']
>> 'hello'
Run Code Online (Sandbox Code Playgroud)