Python实战之能监控文件变化的神器—看门狗

一、前言

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

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

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

二、准备

开始之前,你要确保Python和pip已经成功安装在电脑上噢。

Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。

当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端运行命令安装依赖模块,多舒服的一件事啊。

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

pip install watchdog

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

三、基本使用

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

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

1.配置各项信息;

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

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

4:启动。

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

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

python obserber.py /data/home/ckend/

我们来试着运行看看:

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

四、监控文件变化

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

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

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

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

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

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

到此这篇关于Python实战之能监控文件变化的神器—看门狗的文章就介绍到这了,更多相关Python神器看门狗内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 微软开源最强Python自动化神器Playwright(不用写一行代码)

    相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具.写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑. 虽然selenium有完备的文档,但也需要一定的学习成本,对于一个纯小白来讲还是有些门槛的. 最近,微软开源了一个项目叫「playwright-python」,简直碉堡了!这个项目是针对Python语言的纯自动化工具,连代码都不用写,就能实现自动化功能. 可能你会觉得有点不可思议,但它就是这么厉害.下面我们一起看下这个神器. 1. Pl

  • Python基础之画图神器matplotlib

    Python画图(线条颜色.大小.线形) 先放基础代码,下面讲述效果: import matplotlib.pyplot as plt import numpy as np list1=[1,2,6,4,5,6,2,4,4,5,7] list2=[2,3,5,8,12,1,3,4,6,2,4] plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.title('显示中文标题') plt.xlabel("横坐标") plt.

  • 10款最佳Python开发工具推荐,每一款都是神器

    在人工智能开启的时代,Python作为人工智能的首选语言,前景可以预见.因此学习Python的人越来越多.不过,很多初学Python的小白都一定有过这样的体验,因为没有好用的Python开发工具而吃了很多苦头.工欲善其事必先利其器,这道理只有在实践中才会深有体会.那么初Python用什么工具好?各个开发工具又有哪些特点?本文我就以上的问题,为初学者们介绍一下比较受欢迎且好用的工具. 一.最强终端:Upterm 本来想推荐fish或者zsh,但其实这两个我也主要是贪图自动补全这个特性.最近在用的这

  • 详解Python可视化神器Yellowbrick使用

    机器学习中非常重要的一环就是数据的可视化分析,从源数据的可视化到结果数据的可视化都离不开可视化工具的使用,sklearn+matplotlib的组合在日常的工作中已经满足了绝对大多数的需求,今天主要介绍的是一个基于sklearn和matplotlib模块进行扩展的可视化工具Yellowbrick. Yellowbrick的官方文档在这里.Yellowbrick是由一套被称为"Visualizers"组成的可视化诊断工具组成的套餐,其由Scikit-Learn API延伸而来,对模型选择

  • 地图可视化神器kepler.gl python接口的使用方法

    1 简介 kepler.gl作为开源地理空间数据可视化神器,也一直处于活跃的迭代开发状态下.而在前不久,kepler.gl正式发布了其2.4.0版本,下面我们就来对其重要的新特性进行介绍: 2 kepler.gl 2.4.0重要新特性 2.1 增量时间窗口 在这次更新中,为时间序列数据的可视化新增了增量时间窗口功能,在上一个版本2.3.2中,当我们的数据集带有时间类型字段时,在添加对应的Filters之后,显示出的时间窗口是这个样子的: 而在2.4.0版本中,时间窗口如图所示: 在如下图一样从默

  • python实现跨年表白神器--你值得拥有

    hello,大家好,我是Dream.马上就跨年了,为了广大的单身男性成员,我就慈悲一下,把我的存货–表白神器拿出来了,百试百灵(虽然我一次也没试过),今天分享给大家,别忘了给我点赞哟~ 话不多说,先看效果图: 从图上看,很明显这是一个选择题,但代码的神奇之处就在这里,当她把鼠标拖到'不行'的地方时,奇迹发生了,当当当~ 屏幕上会轮番展示出你的优点,这是我的优点(我只是实话实说的哟) 最最最重要的是她关不掉窗口,重要的事说三遍:关不掉 关不掉 关不掉 就是关不掉!!!气死她哈哈哈...(你好贱,我

  • 推荐技术人员一款Python开源库(造数据神器)

    1. 背景 在软件需求.开发.测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据.由于现在的业务系统数据多种多样,千变万化.在手动制造数据的过程中,可能需要花费大量精力和工作量,此项工作既繁复又容易出错,比如要构造一批用户三要素(姓名.手机号.身份证).构造一批银行卡数据.或构造一批地址通讯录等. 这时候,人们常常为了偷懒快捷,测试数据大多数可能是类似这样子的: 测试, 1300000 000123456 张三, 1310000 000

  • python 视频下载神器(you-get)的具体使用

    you-get是github上python的一个开源库(https://github.com/soimort/you-get),使用you-get你只需要取得视频所在网页链接地址就可以很轻松的下载下来,目前you-get所支持的网站包含国内外几十个网站(youtube.twitter.腾讯.爱奇艺.优酷.bilibili等),基本上可以满足你的需求. 1.you-get可以直接通过命令行使用 前提是你要先安装you-get:pip install you-get 下载命令:you-get  yo

  • Python绘制K线图之可视化神器pyecharts的使用

    K线图 概念 股市及期货市bai场中的K线图的du画法包含四个zhi数据,即开盘dao价.最高价.最低价zhuan.收盘价,所有的shuk线都是围绕这四个数据展开,反映大势的状况和价格信息.如果把每日的K线图放在一张纸上,就能得到日K线图,同样也可画出周K线图.月K线图.研究金融的小伙伴肯定比较熟悉这个,那么我们看起来比较复杂的K线图,又是这样画出来的,本文我们将一起探索K线图的魅力与神奇之处吧! K线图 用处 K线图用处于股票分析,作为数据分析,以后的进入大数据肯定是一个趋势和热潮,K线图的专

  • Python绘制词云图之可视化神器pyecharts的方法

    自定义图片生成词云图的多种方法 有时候我们会根据具体的场景来结合图片展示词云,比如我分析的是美团评论,那么最好的展示方法就是利用美团的logo来做词云图的底图展示,下面我们就介绍几种常用的方法! 根据喜爱的图片生成词云轮廓 from wordcloud import WordCloud import jieba import matplotlib.pyplot as plt import numpy as np import PIL.Image as Image text = open(u'da

  • Python 可视化神器Plotly详解

    文 | 潮汐 来源:Python 技术「ID: pythonall」 学习Python是做数分析的最基础的一步,数据分析离不开数据可视化.Python第三方库中我们最常用的可视化库是 pandas,matplotlib,pyecharts, 当然还有 Tableau,另外最近在学习过程中发现另一款可视化神器-Plotly,它是一款用来做数据分析和可视化的在线平台,功能非常强大, 可以在线绘制很多图形比如条形图.散点图.饼图.直方图等等.除此之外,它还支持在线编辑,以及多种语言 python.ja

  • Python 里最强的地图绘制神器

    今天给大家介绍一个非常 NB 的Python 库,专门用来绘制地图的,它叫 Folium . 1. Folium简介 Folium是一个基于leaflet.js的Python地图库,其中,Leaflet是一个非常轻的前端地图可视化库.即可以使用Python语言调用Leaflet的地图可视化能力.它不单单可以在地图上展示数据的分布图,还可以使用Vincent/Vega在地图上加以标记.Folium可以让你用Python强大生态系统来处理数据,然后用Leaflet地图来展示. Folium中有许多来

随机推荐