如何递归列出具有特定扩展名的所有文件?

时间:2019-09-26 01:29:54

标签: python python-3.x

我想(递归)检索目录内的文件列表(按扩展名过滤)。

我有下面的解决方案,但是我相信有一种更干净的方法可以做到这一点。我可能缺少一个简单的全局表达式,但是任何更好的解决方案都可以。在这种情况下,更好的是可读性(自我记录)而不是性能。

我知道这个示例非常简单,但是当然它是更复杂场景的一部分。

files = glob.glob('documents/*.txt') + glob.glob('documents/**/*.txt')

我希望类似

files = glob.glob('playbooks/(**/)?*.yml')

(仅举一个例子,不起作用)

1 个答案:

答案 0 :(得分:1)

要在glob.glob()中使用**说明符,您需要将recursive参数显式设置为True,例如:

glob.glob('Documents/**/*.txt', recursive=True)

摘自官方文档:

  

如果递归为true,则模式“ **”将匹配任何文件以及零个或多个目录,子目录和目录的符号链接。如果此模式后接os.sep或os.altsep,则文件将不匹配。