我对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库每次都会解析值以获取它,并且将值一次复制到变量中会更有效。我是对还是错?
答案 0 :(得分:0)
简短答案:我认为,这在很大程度上是个人喜好。
答案略长:常见的Python格言是“简单胜于复杂”。最具可读性和最容易理解的是最佳解决方案。
就您对解析的关注而言,通过yaml.load
获得的config对象仅被实例化一次。当您再次从文件中抓取配置字典时,不会从文件中重新加载。
最后的提示:如果在适当位置编辑变量,最终可能会更改原始配置对象。使用嵌套字典(例如yaml.load
生成的字典)特别容易做到这一点。值得注意的是,Python中的“变量”实际上只是带有一些语法糖的指针引用-请注意这一点,并在必要时复制对象以避免覆盖原始对象。