pyinotify模块速查

环境要求

  • Linux >= 2.6.13
  • Python ≥ 2.4 (including Python 3.x)

pyinotify

检测文件系统的变化,依赖于Linux内核的inotify功能。

1.安装

pip install pyinotify

2.简单使用

import pyinotify

monitorObj = pyinotify.WatchManager()
monitorObj.add_watch(path,pyinotify.ALL_EVENTS, rec=True, auto_add=True) # 添加需要监控的路径和监控的事件
handler = EventHandler() # 事件处理类
notifier = pyinotify.Notifier(monitorObj, handler) # notifier处理 
notifier.loop() # 循环处理事件

3.事件处理

在简单使用中的EventHandler类需要我们进行定制,实现对事件的特殊处理方法

import pyinotify
 
multi_event = pyinotify.IN_OPEN | pyinotify.IN_CLOSE_NOWRITE    
monitorObj = pyinotify.WatchManager()   

class MyEventHandler(pyinotify.ProcessEvent):                   
    def process_IN_OPEN(self,event):                            
        print('OPEN',event.pathname)                            
    def process_IN_CLOSE_NOWRITE(self,event):
        print('CLOSE_NOWRITE',event.pathname)
 
handler = MyEventHandler()                                      
notifier = pyinotify.Notifier(monitorObj ,handler)                       
monitorObj.add_watch(path,multi_event)                                
notifier.loop()

4.事件标志

以下事件发生的前提都是相关文件处于被监控目录下

事件标志含义其他
IN_ACCESS文件被访问
IN_ATTRIB文件的一个元数据发生变化包括权限改变,时间戳,扩展属性被修改,链接数变化,所属用户/用户组变化等等
IN_CLOSE_NOWRITE一个不可写文件被关闭
IN_CLOSE_WRITE一个可写文件被关闭
IN_CREATE一个文件或目录被创建
IN_DELETE一个文件或目录被删除
IN_DELETE_SELF被监视的对象本身被删除
IN_DONT_FOLLOW如果是符号链接,则不取消引用路径
IN_IGNORED当watch被移除时发生用户一般用不到,可用IN_DELETE* 代替
IN_ISDIR和目录引发的事件有关
IN_MASK_ADD更新mask值并不覆盖原值
IN_MODIFY一个文件被修改
IN_MOVE_SELF被监控的对象本身被移动了
IN_MOVED_FROM被监控路径中的一个文件/目录从另一个被监控的路径移动而来
IN_MOVED_TO被监控路径中的一个文件/目录移动到另一个被监控的路径
IN_ONLYDIR只监控路径如果它只是个目录
IN_OPEN一个文件被打开
IN_Q_OVERFLOW事件队列溢出
IN_UNMOUNTwhen backing fs was unmounted

参考资料

https://github.com/seb-m/pyinotify/wik

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值