获得相当于“查找”的最简单方法。在python?

时间:2012-09-14 08:32:41

标签: python file filesystems

使用python在文件夹中获取完整的递归文件列表的最简单方法是什么?我知道os.walk(),但是对于获取所有文件的未过滤列表似乎有些过分。它真的是唯一的选择吗?

5 个答案:

答案 0 :(得分:14)

没有什么能阻止你创建自己的功能:

import os

def listfiles(folder):
    for root, folders, files in os.walk(folder):
        for filename in folders + files:
            yield os.path.join(root, filename)

您可以像这样使用它:

for filename in listfiles('/etc/'):
    print filename

答案 1 :(得分:6)

os.walk()无论如何都不会有点过分。它可以在jiffy中生成文件和目录列表:

files = [os.path.join(dirpath, filename)
    for (dirpath, dirs, files) in os.walk('.')
    for filename in (dirs + files)]

您可以将其转换为生成器,一次只处理一个路径并在内存上安全。

答案 2 :(得分:1)

要么使用isdir() / isfile()listdir()进行手动递归,要么可以使用subprocess.check_output()并致电find .。基本上os.walk()是最高级别,略低级别是基于listdir()的半手动解决方案,如果您想要相同的输出find .,您可以出于某种原因使用系统调用subprocess

答案 3 :(得分:1)

您还可以使用sh

从Python中使用find程序
import sh
text_files = sh.find(".", "-iname", "*.txt")

答案 4 :(得分:0)

import os
path = "path/to/your/dir"
for (path, dirs, files) in os.walk(path):
    print files

这是矫枉过正,还是我错过了什么?