ConfigObj长列表和默认值

1 投票
1 回答
1818 浏览
提问于 2025-04-17 12:03

我有几个关于configobj的问题,正在愉快地尝试在这个项目中使用它。

第一个问题是,怎么才能创建一个很长的东西列表?假设我在一个规范文件里声明了:

val = string_list

现在我想这样写:

val = one,
two,
three

但这样是不允许的,而且

val = one, \
  two, \
  three

也不行,有没有办法不把所有内容写在一行上?

第二个问题是,怎么才能避免重复声明默认值?

比如说,我有这样的规范:

skip_pesky_pyc_paths = string_list

我原本以为(接下来是伪代码)

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

但事实并不是这样,如果在配置文件里没有声明,它就找不到这个键?有没有什么神奇的选项可以在没有从规范中声明的情况下自动创建这个键?

一个替代方案可能是使用YAML,但就我所见,ConfigObj在验证方面看起来更好……

1 个回答

3

关于问题的第二部分,我不太确定我理解得对不对,但如果你是在问如何为配置文件中不存在的值设置一个默认值,那么你可以在

skip_pesky_pyc_paths = string_list(default=list())

的验证文件中这样做。这样,如果配置文件中没有skip_pesky_pyc_paths这个值,它就会返回[],也就是一个空列表。

另外,你提到

现在我想把val设置为one, two, three

其实这样是可以的。我刚刚测试过了。确实,把列表中的每个值放在不同的行上是行不通的。

撰写回答