我在配置文件夹中有一堆YAML文件,模板文件夹中有一堆模板。是否有一个简单的单行或函数,我可以用来解析YAML文件并替换模板文件来生成可执行脚本
输入:
配置文件夹:config/yaml1
,config/yaml2
,config/yaml3.
。
模板:template/template1
,template/template2
,template3
。
输出
scripts/script1
,script2
,script3
脚本数量=模板数量
有两种类型的模板
一个直接替代 实施例
YAML1:
Titles:4
SubTitles:10
Template1:
Number of Titles {Titles} where as Number of Subtitles is {SubTitles}
其他模板是嵌套模板。基本上,模板需要基于YAML循环 例如:
YAML2:
Book: "The Choice of using Choice"
Author: "Unknown1"
Book: "Chasing Choices"
Author:"Known2"
Template2
Here are all the Books with Author Info
The author of the {Book} is {Author}
答案 0 :(得分:2)
我不完全确定你要完成什么,我不知道你的可执行脚本是什么意思?如果我正确地解释它,您可以从查看PyYAML文档中受益。具体而言,YAML Tags and Python Types部分。
有几个YAML标签允许调用python模块或包,并且包参数由它下面的嵌套YAML标签填充。所以,你必须编写一个消耗YAML kwargs的类或函数,但你只需在YAML配置中用一行代码调用它,
!!python/object/apply:module.function [argument, ...]
虽然您也可以从中查看 Constructors, Representers and Resolvers部分以及python文档中的string.Template部分。
理论上,您应该能够从YAML文件中调用substitution()函数。
答案 1 :(得分:1)
YAML对模板一无所知,也没有指定需要更新的模板类型。但是如果你使用一个模板语言,假定它的替换值来自Python dict中的键值对,那么你可以在YAML文件中指定一个顶级映射,加载它(将被构造成一个Python然后将其提供给模板引擎。
你仍然需要遍历你的文件,所以几行代码比在单行中实现上述内容更有可能。
答案 2 :(得分:0)