我有这样的词典:
def zip_folder():
zf = zipfile.ZipFile(xbmc.translatePath(os.path.join(home, 'plugin.video.1addon.zip')), "w")
for dirname, subdirs, files in os.walk("plugin.video.1addon"):
zf.write(dirname)
for filename in files:
zf.write(os.path.join(dirname, filename))
zf.close()
当我打印它时,我得到:
ok:[localhost] => { " var":{ " target_host":"两个" }}
所以它将行末尾的\ n转换为空格。这正是应该做的。然而,在这种情况下,我只是试图分散线条,使if / else的结构更具可读性,而且我不想要额外的空间。如果我把它全部放在没有>的一行上,它会按预期工作。但我希望能够使它更加多线化,以便更容易阅读。
所以我能做到:
env: qat
target_host: >
{%if env in ['prd'] %}one
{%elif env in ['qat','stg'] %}two
{%else%}three
{%endif%}
这会产生预期的结果。
无论如何要做到这一点而不会让它更加混乱吗?
答案 0 :(得分:10)
在Jinja *中,您可以通过在块的开头/结尾添加减号来删除空格/换行符。这应该可以解决问题:
env: qat
target_host: >
{%if env in ['prd'] -%}one
{%- elif env in ['qat','stg'] -%}two
{%- else -%}three
{%- endif%}
* Jinja 2是Ansible使用的模板引擎。
答案 1 :(得分:5)
您可能需要的是|
字面量?
env: qat
target_host: |
{%if env in ['prd'] %}one
{%elif env in ['qat','stg'] %}two
{%else%}three
{%endif%}
这不会折叠'空格中的换行符,显示为>