我有一个XML模板文件,需要使用jinja2,
更新正确的值例如:
<xyz controller-version="004-002-010-000">
<abc>
<name>**var_HR_EXACT_NAME**</name>
<type>OPERATION</type>
</abc>
</xyz>
想要更改粗体字母
的变量值Python代码段:
app_import_dir=/usr/local/app/template
template_file_name=TemplateFileName.xml
temp_template_file=/usr/local/app/template/TemplateFileName.xml
property_variable_name='var_HR_EXACT_NAME'
property_variable='This is the new value'
env=jinja2.Environment(loader=jinja2.FileSystemLoader(app_import_dir))
raw_template=env.get_template(template_file_name)
final_template=raw_template.render( **property_variable_name** = **property_variable** )
with open(temp_template_file, 'w') as f:
f.write(final_template)
注意:我在render函数中使用了两个变量,并将该变量替换为null
但是当我在渲染中使用exect字符串时它工作正常。有人可以帮我找到解决方案,请
答案 0 :(得分:0)
<强>答案:强>
看起来我们不应该在循环中使用render,因此使用字典进行了我的python脚本。 添加字典中的所有变量,并使用下面的一个镜头替换它,它按预期工作。
代码段:
#Create a new dictionary
view = {}
#Add all the variables from loop
view[property_variable_name] = property_variable
env=jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir))
raw_template=env.get_template(template_file_name)
#Call dictionary and replace all variable from template
final_template = raw_template.render(**view)