1

我有几个关于 configobj 的问题,我很乐意将其用于这个项目。

第一个问题是,我如何列出很长的清单?假设我已经在规范文件中声明。

val = string_list

现在我想做 val = 一、二、三

但这是不允许的,而且

val = one, \
  two, \
  three

不起作用,有没有办法避免将所有内容写在一行上?

第二个问题是,如何避免声明两倍的默认值?

例如假设我有这个规范:

skip_pesky_pyc_paths = string_list

我理所当然地认为(前面的伪代码)

conf = ConfigObj(spec=myspec)
conf['skip_pesky_pyc_paths'] == []

但事实并非如此,如果它没有在 conf 文件中声明它只是找不到密钥?当没有从规范中声明它们时,是否有一个神奇的选项可以让它创建密钥?

一种替代方法可能是改用 YAML,但据我所知,对于验证 ConfigObj 看起来更好。

4

1 回答 1

3

关于问题的第二部分,我不确定我是否理解正确,但是如果您询问如何为配置文件中不存在的值设置默认值,那么您可以这样做

skip_pesky_pyc_paths = string_list(default=list())

在验证文件中。然后,如果skip_pesky_pyc_paths配置文件中不存在,它将返回[].

还有,你说

现在我想做 val = 一、二、三

但实际上这很好用。我刚刚测试了它。确实,将列表的各个值放在单独的行上是行不通的。

于 2012-12-19T20:18:56.040 回答