在python中获得“find”等价物的最简单方法?

2024-05-16 06:42:08 发布

您现在位置:Python中文网/ 问答频道 /正文

使用python获取文件夹中文件的完整递归列表的最简单方法是什么?我知道os.walk(),但是仅仅获取所有文件的未筛选列表似乎有点过头了。这真的是唯一的选择吗?


Tags: 文件方法文件夹列表oswalk过头
3条回答

还可以使用Python中的find程序本身,方法是使用sh

import sh
text_files = sh.find(".", "-iname", "*.txt")

os.walk()无论如何都不过分。它可以立即生成您的文件和目录列表:

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

你可以把它变成一个生成器,一次只处理一条路径,并且在内存上是安全的。

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

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

相关问题 更多 >