当前位置: 首页 > 后端技术 > Python

一个可以监控文件变化的Python神器——看门狗

时间:2023-03-26 15:52:52 Python

假设有一个应用场景需要监控文件系统,发生变化时产生日志,并对新添加的文件进行一些相应的操作。比如应用到我们之前的音乐高潮提取器:如果当前文件夹中添加了一个音乐文件,监听会调用音乐高潮提取器自动提取音乐文件的高潮部分。这样的监视器不难写,但是需要时间,需要考虑的情况也很多。好在我们是写Python的,有很多轮子可以用。本文介绍了一个叫做watchdog的模块,可以帮助我们实现上述功能。1.在开始之前,您需要确保您的计算机上已经成功安装了Python和pip。如果使用Python进行数据分析,可以直接安装Anaconda。Windows环境打开Cmd(开始-运行-CMD),苹果系统环境打开Terminal(command+空格进入Terminal),准备开始输入命令安装依赖。当然,我更推荐你使用VSCode编辑器,将本文代码复制,在编辑器下方的终端中运行命令安装依赖模块。多么舒服的事情。在终端输入如下命令安装我们需要的依赖模块:pipinstallwatchdog如果看到Successfullyinstalledxxx,则安装成功。2.基本使用看门狗的使用并不复杂。请仔细阅读以下代码和注释:可以看到代码中有几个关键步骤,1.配置各种信息;2.生成事件处理器和监视器;3..注册事件处理器,配置目录,递归执行(即同时监控子文件夹);4:开始。实际上看门狗的观察者是基于threading.Thread对象的,所以观察者的很多属性都继承了threading.Thread的属性。如果不带参数运行脚本,需要监控脚本文件所在的文件夹。如果要监控其他文件夹,记得带文件夹的path参数运行,比如:pythonobserver.py/data/home/ckend/我们试试运行一下:可以看到我在当前文件夹被记录。接下来,让我们尝试自定义一些操作。3.监控文件变化要实现这个功能,我们有几种方法。一是对原有的日志处理器进行一些新的修改,比如增加调用音乐高潮提取器的功能。二是重新继承FileSystemEventHandler类,并进行相应的修改。这里我们还是想保持日志的风格,但是在日志记录的时候顺便把音乐高潮部分提取出来,所以采用第一种方式。看LoggingEventHandler源码中的on_created,这是创建文件时monitor的操作:我们只需要继承这个类,修改on_created就可以完成我们想要的功能:先声明一个类,继承LoggingEventHandler,然后重载on_created函数。在这个函数中,不仅记录了文件事件的变化,还对mp3文件进行了音乐高潮的提取。最后,不要忘记在生成事件处理程序时使用我们的新类名。看效果复制小forever.mp3:成功监听文件变化,提取音乐climax生成climax文件。这样,只要你保持Python进程开启,它就会一直监控这个文件夹。一旦进入音乐文件,它会自动提取其音乐高潮。在linux系统下,可以配合supervisor使用,非常好用。以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能领取大量学习资料。或者去编程学习网了解更多编程技术知识。