1. Pyinotify介绍
- 描述:用来监测文件系统的变化,依赖于
Linux
内核的inotify
功能,inotify
是一个事件驱动的通知器,其通知接口从内核空间到用户空间通过三个系统调用。Pyinotify
结合这些系统调用,提供一个顶级的抽象和一个通用的方式来处理这些功能
- 安装:
pip install pyinotify
- 注意:
windows
上不可以使用,只可以基于Linux
使用
- 包含子模块:
Notifier
,用来读取通知和处理事件。默认情况下,Notifier处理事件的方式是打印事件。
Notifier类在初始化时接受多个参数,但是只有WatchManager对象是必须传递的参数,WatchManager对象保存了需要监视的文件和目录,以及监视文件和目录的哪些事件,Notifier类根据WatchManager对象中的配置来决定如何处理事件
2. Notifier的内置事件
事件名称 |
事件描述 |
IN_ACCESS |
文件访问 |
IN_MODIFY |
文件被写入 |
IN_ATTRIB |
文件属性被修改,如chmod 、chown 、touch 等 |
IN_CLOSE_WRITE |
可写文件被close |
IN_CLOSE_NOWRITE |
不可写文件被close |
IN_OPEN |
文件被open |
IN_MOVED_FROM |
文件被移走,如mv |
IN_MOVED_TO |
文件被移来,如mv 、cp (可以用来检测应用类的文件上传) |
IN_CREATE |
创建新文件 |
IN_DELETE |
文件被删除,如rm |
IN_DELETE_SELF |
自删除,即一个可执行文件在执行时删除自己 |
IN_MOVE_SELF |
自移动,即一个可执行文件在执行时移动自己 |
IN_UNMOUNT |
宿主文件系统被umount |
IN_CLOSE |
文件被关闭,等同于IN_CLOSE_WRITE |
IN_MOVE |
文件被移动,等同于IN_MOVED_FROM |
3. 使用实例
- 描述:下面的代码可以监控服务器上
/dsme/soft/paddleOCR.py
的文件是否被打开
import pyinotify
class IN_DELETE_EventHandler(pyinotify.ProcessEvent):
def process_IN_OPEN(self,event):
print 'OPEN',event.pathname
def process_IN_CLOSE_NOWRITE(self,event):
print 'CLOSE_NOWRITE',event.pathname
multi_event = pyinotify.IN_OPEN | pyinotify.IN_CLOSE_NOWRITE | pyinotify.IN_ACCESS
wm = pyinotify.WatchManager()
handler = IN_DELETE_EventHandler()
notifier = pyinotify.Notifier(wm,handler)
wm.add_watch('/dsme/soft/paddleOCR.py',multi_event)
notifier.loop()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构