如何使用 Python 迭代大量文件?

我需要遍历一个网络驱动器文件夹,此文件夹中大约有 100 万个文件,并且数量每分钟都在增加。
我想要做的是解析文件并使用 Django 在网页中显示它们的信息。

我使用 os.scandir 来遍历所有文件并将它们的信息保存在 sqlite3 数据库中,将整个文件夹遍历一次需要较长时间。

我的问题是:
这个文件夹中每分钟都会添加一些新文件,我需要实时发现这些新文件并将其信息更新到数据库中。

现在有两个方法:
1.遍历所有文件并与数据库中的数据作对比,缺点是耗时太长;
2.在os.scandir 迭代1000次后停止,缺点是os.scandir的排序不能保证,会有遗漏文件的可能。

这两个方法都不够好。
怎样能高效可靠的完成这一工作?


回答:

使用事件通知就好了

方式一:

对于后端程序员来说:

你这种需求也可以简单,写到网络驱动器文件夹的时候,往 mq 写一条,然后订阅 mq 就能实现事件通知

如何使用 Python 迭代大量文件?

方式二:

Python 如何检查文件是否发生变化

如何使用 Python 迭代大量文件?


回答:

遍历这个方法行不通。
你每分钟都会增加新文件。那么要考虑的是,如何监测到新增的文件内容。
这个时候,你可以搭配Linux现成的工具 ionotify
yum install -y inotify-tools
监听create事件,拿到新增文件的路径地址,shell调用你的程序去做下一步处理即可。

以上是 如何使用 Python 迭代大量文件? 的全部内容, 来源链接: utcz.com/p/938483.html

回到顶部