如何使用 Python 迭代大量文件?
我需要遍历一个网络驱动器文件夹,此文件夹中大约有 100 万个文件,并且数量每分钟都在增加。
我想要做的是解析文件并使用 Django 在网页中显示它们的信息。
我使用 os.scandir
来遍历所有文件并将它们的信息保存在 sqlite3 数据库中,将整个文件夹遍历一次需要较长时间。
我的问题是:
这个文件夹中每分钟都会添加一些新文件,我需要实时发现这些新文件并将其信息更新到数据库中。
现在有两个方法:
1.遍历所有文件并与数据库中的数据作对比,缺点是耗时太长;
2.在os.scandir
迭代1000次后停止,缺点是os.scandir
的排序不能保证,会有遗漏文件的可能。
这两个方法都不够好。
怎样能高效可靠的完成这一工作?
回答:
使用事件通知就好了
方式一:
对于后端程序员来说:
你这种需求也可以简单,写到网络驱动器文件夹的时候,往 mq 写一条,然后订阅 mq 就能实现事件通知
方式二:
Python 如何检查文件是否发生变化
回答:
遍历这个方法行不通。
你每分钟都会增加新文件。那么要考虑的是,如何监测到新增的文件内容。
这个时候,你可以搭配Linux现成的工具 ionotify
yum install -y inotify-tools
监听create
事件,拿到新增文件的路径地址,shell调用你的程序去做下一步处理即可。
以上是 如何使用 Python 迭代大量文件? 的全部内容, 来源链接: utcz.com/p/938483.html