首页 > 解决方案 > 在 YAML 文件中读取配置值的适当方法

问题描述

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

标签: pythonyamlpyyaml

解决方案


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

稍微长一点的答案:一个常见的 Python 格言是“简单胜于复杂”。最易读和最容易理解的就是最好的解决方案。

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

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


推荐阅读