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

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

我本来想用 IO 多路复用来实现,但是查看 Python 关于 select 接口的文档(select --- 等待 I/O 完成¶)的时候发现?

该模块提供了对 select() 和 poll() 函数的访问,这些函数在大多数操作系统中是可用的。在 Solaris 及其衍生版本上可用 devpoll(),在 Linux 2.5+ 上可用 epoll(),在大多数 BSD 上可用 kqueue()。注意,在 Windows 上,本模块仅适用于套接字;在其他操作系统上,本模块也适用于其他文件类型(特别地,在 Unix 上也适用于管道)。本模块不能用于常规文件,不能检测出(自上次读取文件后)文件是否有新数据写入。

这让我的想法落空了,Python 的 select 接口居然不支持对普通文件的 IO 多路复用检查?

但是我又不想通过轮询访问最后修改时间来监控文件是否发生变化,因为这在性能和及时性上无法达到很好的平衡。

我想知道 Python 的 select 接口为什么不支持对普通文件的 IO 多路复用


回答:

Linux有个专用于文件系统的监听接口inotify,对于epollinotify的区别和联系,可以参考stackoverflow的这个问答: https://stackoverflow.com/que...

因此你的场景可能更适合去用inotify接口 https://pypi.org/project/inot...

回到你的问题上,因为epoll或者select模型针对的是文件描述符,并不能准确描述通常文件的具体行为,所以epoll本身也并不提供这种功能,参见问答: https://stackoverflow.com/que...

以上是 Python 如何检查文件是否发生变化 的全部内容, 来源链接: utcz.com/p/938156.html

回到顶部