【问题标题】:Faster alternative/usage of os.walk to only find all subdirs in Pythonos.walk 的更快替代/使用仅在 Python 中查找所有子目录
【发布时间】:2011-02-04 19:46:22
【问题描述】:

根据我在互联网和 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

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

谢谢。

【问题讨论】:

    标签: python subdirectory os.walk


    【解决方案1】:

    我不是 100% 肯定这方面的所有方面,但根据我的理解:

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

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

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

    【讨论】:

    • 看起来是一个简单的网络速度问题。我要走的驱动器在网络上。在本地目录上试了一下,速度要快得多。
    • @Cryptite 啊,网络访问将趋于缓慢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 2021-03-08
    • 2020-05-31
    • 2023-01-09
    相关资源
    最近更新 更多