【问题标题】:Appropriate ways to read config values in a YAML file在 YAML 文件中读取配置值的适当方法
【发布时间】:2019-12-27 23:54:59
【问题描述】:

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

【问题讨论】:

  • 为什么会更 Pythonic?写任何你认为更具可读性的东西。 IMO 这可能是第一个选择。

标签: python yaml pyyaml


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2022-12-20
    • 2018-03-05
    • 2021-10-23
    • 1970-01-01
    • 2019-01-24
    • 2016-11-19
    • 2018-05-16
    • 2017-10-10
    相关资源
    最近更新 更多