2017-02-25 14 views
7

私は、YAMLファイルをconfigフォルダに入れ、テンプレートフォルダにテンプレートをたくさん入れています。
configフォルダ:config/yaml1config/yaml2config/yaml3.私は実行可能なスクリプト YAMLファイルを解決してテンプレートに置き換える

入力

を生成するためのテンプレートファイルでYAMLファイルと代替を解決するために使用できる簡単な1つのライナーかの機能があります。
テンプレート: template/template1template/template2template3

出力
scripts/script1script2script3

スクリプトの数=

は、テンプレートの2種類がテンプレートの数があります単純な置換である

一つ 例

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} 

答えて

1

YAMLテンプレートについては何も知らない、とあなたは、更新が必要なテンプレートの種類を指定しないでください。しかし、あなたがPythonのdictでキーと値のペアから来る置換の値を前提とするテンプレート言語を使用している場合は、YAMLファイルにトップレベルのマッピングを指定し、ロードします(これはPython dict)し、それをテンプレートエンジンに送ります。

あなたはファイルを操作する必要があります。そのため、1行で上記のコードを実現するよりも、数行のコードが多くなります。

2

あなたが達成しようとしていることは完全にはわかりませんが、実行可能なスクリプトが何を意味するのか分かりません。私が正しく解釈していれば、PyYAML Docsを見れば恩恵を受けるかもしれません。具体的には、YAML Tags and Python Typesに関するセクション。

Pythonモジュールやパッケージを呼び出すことができ、パッケージ引数の下にネストされたYAMLタグが埋め込まれるYAMLタグがいくつかあります。だから、あなたはYAMLのkwargsから消費クラスや関数を記述する必要がありますが、あなたも見てみるの恩恵を受けるかもしれませんが、あなただけの

!!python/object/apply:module.function [argument, ...] 

、そのような1行でYAMLの設定でそれを呼び出します セクションをConstructors, Representers and Resolversに、string.Templateをpython docsから入手してください。

理論的には、YAMLファイル内からsubstitution()関数を呼び出すことができるはずです。

関連する問題