【问题标题】:How can I specify a column for a variable in a Jinja2 template?如何在 Jinja2 模板中为变量指定列?
【发布时间】:2021-01-12 22:58:52
【问题描述】:

我有一个看起来像这样的 jinja2 模板。

{% for file in result['files'] %}
descriptiontxt        {{ inventory_hostname }}{{ file['path'] | truncate(50)}} {{ {{ '%Y%m%dT%H%M%S' | strftime(file['lastwritetime']) }} MoreDescriptiveText

在本例中,输出可能如下所示。

descriptiontxt        host1C:\dir\directory\directory\directory\txt.txt 20210106T081330 MoreDescriptiveText
descriptiontxt        host2C:\dir\directory\txt.txt 20210106T081330 MoreDescriptiveText
descriptiontxt        host3C:\dir\directory\truncated\example\123456677 20210106T081330 MoreDescriptiveText

我希望输出看起来像这样。

descriptiontxt        host1C:\dir\directory\directory\directory\txt.txt 20210106T081330 MoreDescriptiveText
descriptiontxt        host2C:\dir\directory\txt.txt                     20210106T081330 MoreDescriptiveText
descriptiontxt        host3C:\dir\directory\truncated\example\123456677 20210106T081330 MoreDescriptiveText

如何确保文件每一行的日期字符串从第 72 列(或其他位置)开始? 无论前一个条目是 10 个字符还是 50 个字符,鉴于前一个变量的截断可确保路径变量永远不会溢出到文件的该部分。

谢谢。

【问题讨论】:

    标签: jinja2 ansible-template


    【解决方案1】:

    也许通过使用format 过滤器,像这样:

    {% for file in result['files'] %}
    descriptiontxt        {{ inventory_hostname }}{{ "%-50s"|format(file['path'] | truncate(50))}} {{ {{ '%Y%m%dT%H%M%S' | strftime(file['lastwritetime']) }} MoreDescriptiveText
    {% endfor %}
    

    这确保file['path'] 占用 50 个字符,即使实际字符串更短。

    【讨论】:

      猜你喜欢
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多