在Python中更快查找所有子目录的os.walk替代方法/用法
根据我在网上和这里的讨论,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
不过在一个有很多子目录和文件的文件夹里,它的速度似乎很慢。
谢谢。
1 个回答
2
我对这个问题的所有细节不是百分之百确定,但根据我的理解:
一般来说,文件列表已经包含在目录的元数据里,所以当你查看一个目录时,这些数据已经存在了(在Linux系统上是这样,不确定Windows是否也是)。这意味着使用os.walk可能是最快、最简单的方法。
另外,在没有进行性能分析的情况下,你知道os.walk真的就是导致慢的地方吗?记住,一般的建议是先把你的应用程序或项目写出来,如果运行得太慢,再开始分析性能,找出慢的部分,然后进行优化等等……
使用os.walk时,我可以在几秒钟内遍历几千个目录和七万多个文件,所以这应该足够快,能够满足你的需求。