我正在寻找一种高性能的方法或库,用于扫描磁盘上或给定目录中的所有文件,并获取它们的基本统计信息—文件名、大小和修改日期。
我已经编写了一个python程序,它使用os.walk
和os.path.getsize
来获取文件列表,它工作得很好,但速度不是特别快。我注意到我下载的一个免费软件程序完成相同的扫描比我的程序快得多。
有什么加速文件扫描的办法吗?这是我的python代码,但请记住,如果有更好的选择的话,我根本不喜欢os.walk,完全愿意使用其他api(包括windows原生api)。
for root, dirs, files in os.walk(top, topdown=False):
for name in files:
...
我还需要注意的是,我意识到python代码可能不能加快那么多速度;我对任何提供更好速度的本地api都特别感兴趣。
好吧,我希望这是一个严重的I/O限制的任务。 因此,python端的优化将是非常无效的;我能想到的唯一优化是一些访问/列出文件的不同方式,以减少从文件系统中实际读取的文件。 当然,这需要对文件系统有深入的了解,这是我所没有的,而且我也不希望python的开发人员在实现
os.walk
时拥有这些知识。生成一个命令提示符,然后发出'dir'并分析结果如何? 这可能有点过火,但幸运的是,“dir”正在为这种优化做一些努力。
似乎os.walk已经在Python2.5中considerably improved,所以您可以检查是否正在运行该版本。
除此之外,someone has already compared the speed of os.walk to ls并注意到后者有明显的进步,但不在一个可以实际证明使用它是正当的范围内。
您可能需要查看一些Python版本控制系统(如Mercurial或Bazaar)的代码。他们花了大量时间来研究快速遍历目录树和检测更改(或“查找有关文件的基本统计信息”)的方法。
相关问题 更多 >
编程相关推荐