首页 > 其他分享 >Pyinotify实现对文档的实时监控

Pyinotify实现对文档的实时监控

时间:2023-06-14 19:13:11浏览次数:22  
标签:文件 实时 pyinotify 文档 Pyinotify CLOSE event Notifier DELETE

1. Pyinotify介绍

  • 描述:用来监测文件系统的变化,依赖于Linux内核的inotify功能,inotify是一个事件驱动的通知器,其通知接口从内核空间到用户空间通过三个系统调用。Pyinotify结合这些系统调用,提供一个顶级的抽象和一个通用的方式来处理这些功能
  • 安装:pip install pyinotify
  • 包含子模块:Notifier,用来读取通知和处理事件。默认情况下,Notifier处理事件的方式是打印事件。
    Notifier类在初始化时接受多个参数,但是只有WatchManager对象是必须传递的参数,WatchManager对象保存了需要监视的文件和目录,以及监视文件和目录的哪些事件,Notifier类根据WatchManager对象中的配置来决定如何处理事件

2. Notifier的内置事件

事件名称 事件描述
IN_ACCESS 文件访问
IN_MODIFY 文件被写入
IN_ATTRIB 文件属性被修改,如chmodchowntouch
IN_CLOSE_WRITE 可写文件被close
IN_CLOSE_NOWRITE 不可写文件被close
IN_OPEN 文件被open
IN_MOVED_FROM 文件被移走,如mv
IN_MOVED_TO 文件被移来,如mvcp (可以用来检测应用类的文件上传)
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. 使用实例

import pyinotify


# 监控多个事件
multi_event = pyinotify.IN_OPEN | pyinotify.IN_CLOSE_NOWRITE
# 创建WatchManager对象
wm = pyinotify.WatchManager()
# 实例化我们定制化后的事件处理类
handler = IN_DELETE_EventHandler()
# 交给Notifier进行处理
notifier = pyinotify.Notifier(wm,handler)
# 添加监控的目录,及事件
wm.add_watch('/tmp',multi_event)
notifier.loop()
# wm.watch_transient_file('/tmp', pyinotify.IN_DELETE,IN_DELETE_EventHandler) # 添加要监控的目录以及监控的事件
# 必须为process_事件名称,event表示事件对象,event.pathname 表示触发事件的文件路径
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)

标签:文件,实时,pyinotify,文档,Pyinotify,CLOSE,event,Notifier,DELETE
From: https://www.cnblogs.com/zhaohaodong/p/17481027.html

相关文章

  • 虹科干货 | BI软件如何实时连接本地Excel?—以HK-Domo商业智能工具为例
    由于资源和人才的限制,很多中小微企业目前在数据收集和数据应用上还处于比较落后的阶段,没有合适的方法处理数据。最典型的情况就是通过Excel收集数据,然后频繁的手动生成报告。这样会导致数据质量差,流程重复,还可能增加数据错误的风险。因此,企业需要非常通过BI工具来改善数据处理流程,......
  • es 查询多个索引的文档
    es查询多个索引第一种做法:多个索引,用逗号隔开GET/book_2020_09,book_2021_09/_search第二种做法:可以用*模糊匹配。。比如book*,表示查询所有book开头的索引。GET/book*/_searchGET/*book*/_search第二种做法:索引加别名,使用别名搜索。PUT/索引名称/_a......
  • 便捷同步本地的博客文档到博客园
    前言我写博客的初心很简单,一是一些软件的配置过程(防止第二次配置的时候又抓瞎);二是记录下一下自己学习过程中的一些心得体会,在高乙超的博客中,我曾经看到一句话,叫"Tolearn,read;Toknow,write;Tomaster,teach"。过去二十年里,在学习的过程中,一直是作为一个输入方,应付考试......
  • MySQL 表信息查询,便于补数据库结构设计文档
    MySQL表信息查询,便于补数据库结构设计文档selectc.table_name表名,t.TABLE_COMMENT表说明,c.COLUMN_NAME列名,c.COLUMN......
  • 怎么将WPS中文档页面调整为一页纵向一页横向?
    1.单击菜单栏中的章节;2.选择工具栏中的拆分章节单击下一页分节符,此时文档出现两页;3.单击菜单栏中的页面布局;4.选择工具栏中的纸张方向,单击横向完成文档页面调整为一页纵向一页横向。 ......
  • UISlider滑动条的属性介绍以及于标签联合使用实时显示变动值
     UISlider滑动条的属性介绍以及于标签联合使用实时显示变动值 (1)滑动条的左右端背景可以设置上一页下一页的图片; (2)滑动条的轨道图片可以设置为渐变等等图片。 (3)滑动条因为值可以互动,所以addTarget:方法很重要,其中事件值变动UIControlEventValueChanged比较特殊,其实和按钮的按下......
  • Prompt范式产业实践分享!基于飞桨UIE-X和Intel OpenVINO实现跨模态文档信息抽取
    近期Prompt范式备受关注,实际上,其思想在产业界已经有了一些成功的应用案例。中科院软件所和百度共同提出了大一统诸多任务的通用信息抽取技术UIE(UniversalInformationExtraction)。截至目前,UIE系列模型已发布UIE、UIE-X、UIE-senta三大模型。基于Prompt思想,UIE系列模型凭......
  • 互动协作白板与音视频实时同步技术实践
    本文整理自即构科技互动白板技术负责人陈晓聪在LiveVideoStack的线上分享,内容主要围绕白板与音视频的同步和白板的多端实时互动两个角度,深度解析即构在互动白板方面的技术探索实践。文/陈晓聪整理/LiveVideoStack大家好,我是来自即构的陈晓聪,现在主要负责互动白板的技术研发工作......
  • 新的Google Lyra音频编解码器对实时视频流意味着什么?
    正文字数:2602 阅读时长:4分钟通过语言编码中的码率缩减趋势,Lyra与Opus中的区别比较,Lyra的作用,XDN平台上的高效语音编码技术几个方面探讨新的GoogleLyra音频编解码器对实时视频流的意义。文/ RED5PRO https://www.red5pro.com/blog/what-does-the-new-google-lyra-audio-codec-......
  • c# 将指定文件名和路径的txt文档内容读出来并写到Excel中—winform程序
    使用C#中的`System.IO`和`Microsoft.Office.Interop.Excel`库来实现读取文本文件和写入Excel文件。以下是一个示例代码:1usingSystem;2usingSystem.IO;3usingSystem.Windows.Forms;4usingMicrosoft.Office.Interop.Excel;56namespaceWinFormDemo......