首页 > 解决方案 > 在 pyyaml 中处理布尔值

问题描述

我正在使用 python jinja2 为 CI/CD 渲染一些 json 文件。这些文件将由用 GoLang 编写的应用程序使用。

变量定义为 yaml 文件并使用 pyymal 加载。例如..

模板

{ 
"enable_log": {{ enable_log}}  
}

变量文件:

---
us-east-2:
 dev:
    enable_log: true 
 prod:
    enable_log: false
  

结果如下

{ "enable_log": True }

代码片段:

template_env = Environment(loader=FileSystemLoader(cfg_dir), trim_blocks=True,
                                           lstrip_blocks=True, undefined=StrictUndefined)

source_template = template_env.get_template(cfg_template)

config_data = yaml.load(open(VARS))

with open(out_file, 'w') as f:
    data = source_template.render(config_data[region][env])
    f.write(data)

我知道 python 布尔值是 True & False。但是应用程序代码(Golang)没有将其加载为布尔值。pyyaml 中是否有任何解决方法来解决此问题?

标签: pythongotemplatesjinja2pyyaml

解决方案


这是固定的。解决方案是使用 yaml.BaseLoader

config_data = yaml.load(open(VARS), Loader=yaml.BaseLoader)

推荐阅读