更快的替代/使用os.walk只能找到Python中的所有子目录

时间:2011-02-04 19:46:23

标签: python subdirectory os.walk

从我在互联网上看到的内容和SO上的内容,os.walk是查找目录中所有子目录和文件的最佳选择之一,但我的问题是,如果我仅< / em>想递归查找所有子目录,是os.walk最快的解决方案吗?

我想另外我的问题是因为对os.walk的调用涉及for root, dirs, files in os.walk(path),如果你不一定要求它,os.walk实际上会查看所有文件吗?

目前,我的代码是:

for root, dirs, files in os.walk(path):
    for x in dirs:
        DoStuffHere

但是在包含许多子目录和文件的文件夹上看起来确实很慢。

感谢。

1 个答案:

答案 0 :(得分:2)

我不是百分之百地确定这一点,而是根据我的理解:

通常,文件列表已包含在目录元数据中,因此当您查找目录时数据已经存在(Linux,不确定bout windows)。所以这意味着os.walk可能是最快/最简单的方法。

再次没有剖析你知道os.walk是否真的是减速的地方?请记住,一般的建议是编写应用程序/项目的代码,如果它太慢,请开始分析以找到缓慢的部分并重新考虑它们等...

在os.walk上我能够在几秒钟内浏览几千个目录+7万个文件,所以它可能会快速满足您的需求。