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

时间:2019-12-27 23:54:59

标签: python yaml pyyaml

我对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库每次都会解析值以获取它,并且将值一次复制到变量中会更有效。我是对还是错?

1 个答案:

答案 0 :(得分:0)

简短答案:我认为,这在很大程度上是个人喜好。

答案略长:常见的Python格言是“简单胜于复杂”。最具可读性和最容易理解的是最佳解决方案。

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

最后的提示:如果在适当位置编辑变量,最终可能会更改原始配置对象。使用嵌套字典(例如yaml.load生成的字典)特别容易做到这一点。值得注意的是,Python中的“变量”实际上只是带有一些语法糖的指针引用-请注意这一点,并在必要时复制对象以避免覆盖原始对象。