如何在 Jinja2 模板中为变量指定一列?

How can I specify a column for a variable in a Jinja2 template?

我有一个看起来像这样的 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\example3456677 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\example3456677 20210106T081330 MoreDescriptiveText

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

谢谢。

也许可以使用 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 个字符,即使实际字符串更短也是如此。