神器推荐!一个能监控文件变化的Python神器—看门狗

Python爱好者社区 2021-08-07

以下文章来源于Python实用宝典 ,作者Ckend

来源于Python实用宝典

作者Ckend

假设现在有一个应用场景,需要对文件系统进行监控,发生变化时产生日志,对新增的文件做一些相应的操作。

比如说应用到我们之前的音乐高潮提取器:若当前文件夹下增加了一个音乐文件,监控器就调用音乐高潮提取器,自动提取该音乐文件的高潮部分。

这样的监控器写起来也不难,但是很花时间,有许多情况要考虑。不过幸好我们是写Python的,有许多轮子可以使用。

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上噢,Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。

当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端运行命令安装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南

在终端输入以下命令安装我们所需要的依赖模块:

pip install watchdog

看到 Successfully installed xxx 则说明安装成功。

2.基本使用

看门狗的使用并不复杂,请认真看以下代码和注释:

可以看到代码中有几个关键步骤,

1.配置各项信息;

2.生成事件处理器、监控器;

3.注册事件处理器、配置目录、递归执行(即同时监控子文件夹);

4:启动。

其实,看门狗的observer是基于  threading.Thread  对象的,所以observer很多属性都继承了 threading.Thread 的属性。

如果你不带参数地运行该脚本,就是要监控脚本文件所在的文件夹,如果要监控其他文件夹,记得运行时带文件夹的路径参数,如:

python obserber.py /data/home/ckend/

我们来试着运行看看:

可以看到,我在当前文件夹下做的所有操作都被记录下来了。接下来我们就试试怎么自定义一些操作。

3.监控文件变化

要实现这样的功能,我们有几种方法,一个是在原来log的处理器上做一些新增修改,比如多增一个函数调用音乐高潮提取器。第二个是重新继承 FileSystemEventHandler 类,并做相应的修改。这里我们还是要保留log的样式,只是在log的时候顺便提取音乐高潮,因此采用第一个方法。

看看 LoggingEventHandler 源代码中的 on_created ,这就是当文件创建时监控器的操作:

我们仅需要继承这个类并对 on_created 进行修改,就能完成我们想要的功能:

首先声明一个类,继承 LoggingEventHandler ,然后重载 on_created 函数,在这个函数中不仅记录文件事件变化,还要对mp3文件做一次音乐高潮提取。最后别忘了,生成事件处理器时要用我们新的类名。

看看效果,将 小永远.mp3 复制过来:

成功监控文件变化并提取到音乐高潮,生成高潮文件。这样,只要你保持这个Python进程不关闭,它就会一直监控这个文件夹,一旦有音乐文件进入,就会自动提取它的音乐高潮,在linux系统下,可以搭配supervisor使用,非常好用。

(0)

相关推荐

  • Python十大文件骚操作!!

    来源:Python数据科学 作者:东哥起飞 日常对于批量处理文件的需求非常多,用Python写脚本可以非常方便地实现,但在这过程中难免会和文件打交道,第一次做会有很多文件的操作无从下手,只能找度娘. ...

  • Python管理文件神器 os.walk

    文章转自:Python编程 有没有想过用python写一个文件管理程序?听起来似乎没思路?其实是可以的,因为Python已经为你准备好了神器os.walk,进来看看吧! Python中os.walk是 ...

  • 彻底搞懂Python 中的 import 与 from import

    对不少 Python 初学者来说,Python 导入其他模块的方式让他们很难理解.什么时候用import xxx?什么时候用from xxx import yyy?什么时候用from xxx.yyy ...

  • VBA和Python对对碰,获取文件名称(含子文件夹)

    获取文件夹下文件名,使用VBA处理难度并不大,但是获取全部(包括子文件夹)就难倒了很多新手!今天我们就使用Python和VBA一起来看看如何获取全部文件名! VBA 获取全部文件名(含子文件夹) 子文 ...

  • 推荐一个非常好用的AI笔记神器 !

    今天给大家推荐一个超好用的AI笔记神器,只要上传视频或直接贴上视频链接,就能自动生成AI笔记!它能够自动识别视频的内容,生成每帧文字截图,并将语音转成文字! [适用平台] macOS.Windows. ...

  • Shell 监控文件变化

    转自: 有心故我在 https://www.cnblogs.com/youxin/p/13816303.html 文件监控可以配合rsync实现文件自动同步,例如监听某个目录,当文件变化时,使用rsy ...

  • 推荐一个大文件跨平台传输神器,速度秒杀蓝牙128倍

    推荐一个大文件跨平台传输神器,速度秒杀蓝牙128倍

  • 菜鸟记494-今天推荐一个断网时候能救命的手机转接头神器

    万一您身边的朋友用得着呢? 各位朋友早上好,小菜继续和您分享经验之谈,截止今日小菜已分享500+篇经验之谈,可以文章编号或关键词进行搜索. 微信推送规则发生改变,如果您想看到小菜每个工作日的经验之谈, ...

  • 推荐一个神器!可以在浏览器运行 Node.js

    全栈修仙之路 5天前 以下文章来源于code秘密花园 ,作者ConardLi 在最新的 Google I/O 主题演讲中 stackblitz 向大家介绍了他们与 Next.js 和 Google 团 ...

  • 百度网盘再见,三款文件分享、传输神器推荐!

    第一款神器:tmp.link 只有网站,没有看到App,但是没有广告,很干净,主打无限空间,超大文件,下载是否限速没有做说明. 不过上传文件的时候,你会发现,其实他是会自动清理文件的,所以所谓的无限空 ...

  • 给大家推荐一个神器

    forcode:给大家推荐一个神器:掏耳朵一定要用黑色掏耳朵专用棉签,这样每次掏耳朵都会很有成就感!记住,一定要是黑色的!每次都会很有收获! ================ forcode:刚接触美 ...

  • 推荐一个神器,开发 API 只需要一分钟

    " 阅读本文大概需要 3 分钟. " 背景 有时候我会碰到快速搭建测试服务的需求,比如像这样: " 搭建一个 HTTP Service,这个服务器可以 run 在本地,也 ...

  • 推荐一个最接近真实的英语词汇量测试神器

    学英语很难,但学习很快乐.     --- 学英语那点事 作者 | 学姐 大家好,我是学姐. 如何得知自己现阶段的英语词汇量到底是多少呢? 我想,如果要保证百分百精确的话,恐怕只有一个办法: 找到一个 ...