【Python】jinja2を使ってtemplateを読み込みたい
はじめに
<バージョン>
python: 3.7.9
以下のような、jinja2テンプレートとymlを組み合わせるにはどうすればいいでしょうか?
参考記事(1つ目)のように、ymlを引数としてpythonに渡すコードは見つかったのですが、
pythonコードの中で完結しているものがなかったので作ってみました。
var1: {{ var1 }}
var2: {{ var2 }}
---
var1: test1
var2: test2
1. サンプルコード
コードにあるように「with open」を使えば、ymlを引数としてpythonに渡す必要が
無くなるようです。
#!/usr/bin/env python3
# coding: utf-8
import sys, yaml, jinja2
# define variable
base_dir = '/home/ec2-user/test'
j2_dir = base_dir + '/j2'
yml_dir = base_dir + '/yml'
# import j2 template
_loader = jinja2.FileSystemLoader(j2_dir, encoding='utf-8')
_environment = jinja2.Environment(loader=_loader)
_template = _environment.get_template("test.j2")
# import yaml and render
with open(yml_dir + '/' + 'test.yml') as import_yml:
sys.stdout.write(_template.render(yaml.load(import_yml)))
2. ディレクトリ構成
ファイルは以下の構成にしてください。
.
├── template.py
├── j2
│ └── test.j2
└── yml
└── test.yml
3. 実行結果
想定通り、jinja2を使ってymlとtemplateを組み合わせることが出来ました。
[ec2-user@ip-<ip-addr> test]$ python template.py
var1: test1
var2: test2
参考資料
PythonでYAMLを読み込んでJinja2で整形する
【PyYAML VS ruamel.yaml】PythonからYAMLファイルを触ってみた
Author And Source
この問題について(【Python】jinja2を使ってtemplateを読み込みたい), 我々は、より多くの情報をここで見つけました https://qiita.com/masa2223/items/c8e48bb4de4e52be0a42著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .