0

我想定义几组值,如果选择该组,则使用特定组的值。

这是一个更清楚的示例:

[environment]
type=prod

[prod]
folder=data/
debug=False

[dev]
folder=dev_data/
debug=True

然后使用它:

print config['folder'] # prints 'data/' because config['environment']=='prod'

在 configobj 或其他方式中是否有一种自然或惯用的方式来执行此操作?


附加信息

我目前的想法是使用解析配置文件的一些逻辑后覆盖或添加到结果配置对象。然而,这感觉与配置文件的性质相反,并且感觉需要一些复杂的逻辑来验证。

4

1 回答 1

0

我知道这可能不是您正在搜索的内容,但是您是否考虑过使用json简单的嵌套访问?

例如,如果您的配置文件看起来像

{
    "environment": {
        "type": "prod"
    },
    "[dev]": {
        "debug": "True",
        "folder": "dev_data/"
    },
    "[prod]": {
        "debug": "False",
        "folder": "data/"
    }
}

您可以使用[dev][prod]键访问它以获取您的文件夹:

>>> config = json.loads(config_data)
>>> config['[dev]']['folder']
'dev_data/'
>>> config['[prod]']['folder']
'data/'
于 2015-07-21T08:58:49.457 回答