1

根据我在互联网和 SO 上阅读的内容,os.walk 是在目录中查找所有子目录和文件的最佳选择之一,但我的问题是,如果我只想递归查找所有子目录, 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

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

谢谢。

4

1 回答 1

2

我对这方面的所有方面都不是 100% 肯定,但据我了解:

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

同样没有分析你知道 os.walk 是否真的是减速的地方吗?请记住,一般建议是编写您的应用程序/项目,然后如果它太慢,则开始分析以找到慢速部分并重新分解它们,等等......

在 os.walk 上,我可以在几秒钟内 os.walk 大约几千个目录 + 70000 个文件,所以它可能会很快满足您的需要。

于 2011-02-04T20:16:34.947 回答