使用模板工具包检索过滤后的文件列表

Retrieving filtered list of files using template toolkit

我想检索满足给定正则表达式规则或字符串的目录中的文件内容(例如 ./*.xml)。

我找到了以下示例

[% FOREACH directory.files.grep('\.txt$') %]
   ...
[% END %]

但是不知道怎么用。这能解决我的问题吗?

快速查看文档表明 directory.files 的输出是一个对象集合,因此 .grep() 不太可能起作用。它有nameisdir等方法。

最简单的解决方案如下:

[%- FOREACH file IN directory.files;
        #NEXT UNLESS file.name.match('\.xml$');
        NEXT UNLESS file.ext == 'xml';
        ...
    END -%]

编辑:根据 ThisSuitIsBlackNot 的建议改进了答案。