在 YAML 文件中读取配置值的适当方法

Appropriate ways to read config values in a YAML file

我的 python 程序配置存储在 yaml 文件中;

config = yaml.load('/some/folder/path/myconfig.yaml'))

我在 python 脚本的开头附近的一个区域中尽早加载所有配置值

infldr = config['myapp1']['inputFolder']
outfldr = config['myapp1']['outputFolder']

在后面的部分中,我引用了我将 yaml 配置值复制到的变量;

原方法

filename = 'blahblah.blah'
copyfile(infldr + filename, outfldr + filename)

它工作正常,但我想知道,直接引用 yaml 值会更 "pythonic" 还是更有效;

可能的新方法

copyfile(config['myapp1']['inputFolder'] + filename, 
         config['myapp1']['outputFolder'] + filename)

如果我循环遍历文件夹中的所有文件,哪个更好?还有什么pythonic?什么时候使用原始方法与新方法比较合适?我怀疑 python yaml 库每次都在解析值以获取它,并且将值一次复制到变量会更有效。我是对还是错?

简答:在我看来,这主要是个人喜好。

稍微长一点的回答:一个常见的Python格言是"simple is better than complex"。最易读、最容易理解的就是最好的解决方案。

就您对解析go的关注而言,通过yaml.load获取的配置对象仅实例化一次。当您再次从文件中获取时,配置字典不会从文件中重新加载。

最后说明:如果您就地编辑变量,最终可能会更改原始配置对象。这对于嵌套字典特别容易做到,例如 yaml.load 生成的字典。值得注意的是 Python 中的 'variables' 实际上只是带有一些语法糖的指针引用——要小心这一点,并在必要时复制对象以避免覆盖原始对象。