快速检查python中是否存在大量文件

2024-03-29 00:18:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试跟踪数据库中引用的大量文件,这些文件可能已传输或尚未存在。在

我发现在一个缓慢的网络上循环上千个文件,用isfile检查文件是否存在是相当慢的。在

os.path.isfile(filepath)

使用files=os.listdir(path)来获取文件列表会更快吗?然后和我的数据库比较?有别的办法吗?在


Tags: 文件path网络数据库列表osfileslistdir
1条回答
网友
1楼 · 发布于 2024-03-29 00:18:39

Would it be faster to use files=os.listdir(path) to get a list of files instead?

要看情况而定。在

如果您在30个目录中查找3000个文件中的1000个,那么列出这30个目录对于几乎任何文件系统来说都会更快。在

如果您在1000个目录中查找100000个文件中的1000个,那么列出1000个目录显然比只统计1000个文件慢。在

作为一个粗略的指导,在典型的*nix系统(如OS X或Linux)上,列出一个目录所需的时间大约相当于统计一个文件的长度。然而,在某些网络文件系统上,延迟可能比带宽问题严重得多,在这种情况下,这个比率可能会上升。在

对于您的实际用例,如果不清楚哪一个更快,请尝试两者(可能是较小的子集)并进行比较。在

最后一件事,如果你想在很长一段时间内“跟踪”,并且你现在正在定期地重新检查它们,那么有一种方法可以避免这种情况。根据您的平台和共享协议,您可以在文件或目录上设置文件系统监视,并检测何时发生更改。在

相关问题 更多 >