从我在互联网上看到的内容和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
但是在包含许多子目录和文件的文件夹上看起来确实很慢。
感谢。
答案 0 :(得分:2)
我不是百分之百地确定这一点,而是根据我的理解:
通常,文件列表已包含在目录元数据中,因此当您查找目录时数据已经存在(Linux,不确定bout windows)。所以这意味着os.walk可能是最快/最简单的方法。
再次没有剖析你知道os.walk是否真的是减速的地方?请记住,一般的建议是编写应用程序/项目的代码,如果它太慢,请开始分析以找到缓慢的部分并重新考虑它们等...
在os.walk上我能够在几秒钟内浏览几千个目录+7万个文件,所以它可能会快速满足您的需求。