解析YAML文件并替换为模板

时间:2017-02-25 01:00:53

标签: python templates yaml

我在配置文件夹中有一堆YAML文件,模板文件夹中有一堆模板。是否有一个简单的单行或函数,我可以用来解析YAML文件并替换模板文件来生成可执行脚本

输入:
配置文件夹:config/yaml1config/yaml2config/yaml3.
模板:template/template1template/template2template3

输出
scripts/script1script2script3

脚本数量=模板数量

有两种类型的模板

一个直接替代 实施例

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}

3 个答案:

答案 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)

这是一种模板语言,可将python的大部分功能都提供给模板,并且与yaml文件配合得很好:

https://pypi.org/project/smx/

应该能够帮助在yml中执行模板任务。