python基于watchdog库全自动化监控目录文件
作者:古明地盆 发布时间:2022-04-21 19:17:47
标签:python,watchdog,自动化监控
目录
楔子
使用方法
创建一个文件
创建一个目录
重命名
将文件1.txt移动到子目录test_child, 所以此时会伴随一个创建、一个删除以及一个修改
修改文件1.txt
小结
楔子
有些时候我们需要对一个目录进行监控,检测其内部是否有文件的新增、删除、以及每个文件的内容是否发生变化,这个时候如果是你的话,你会选择怎么做呢?
显然也是一个比较麻烦的工作,倒不是说难,主要是比较繁杂。但万幸的是,已经有一个第三方包watchdog帮我们完美地实现了这一点,所以这就是Python啊,想做什么都有现成的。
那么下面就来看一下它的用法,当然要先安装。直接:pip install watchdog
即可。
使用方法
在我的桌面上有一个空目录test,一会儿我们对这个目录做的操作都会体现出来,另外这个包是可以适配所有主流操作系统的。
# 导入Observer和FileSystemEventHandler
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
# 定义一个类, 继承自FileSystemEventHandler
class CodeEventHandler(FileSystemEventHandler):
def on_moved(self, event):
"""当一个文件或者目录被重命名时"""
print(f"{event.src_path} 被重命名为 {event.dst_path}")
def on_created(self, event):
"""当一个文件或者目录被创建时"""
print(f"{event.src_path}被创建了")
def on_deleted(self, event):
"""当一个文件或者目录被删除时"""
print(f"{event.src_path}被删除了")
def on_modified(self, event):
"""当一个文件或者目录被修改时"""
print(f"{event.src_path}被修改了")
def main():
# 创建一个观察者
observer = Observer()
# 开启调度, 接收三个参数: handler、监控的目录、是否递归所有子目录
observer.schedule(CodeEventHandler(), r"C:\Users\satori\Desktop\test", True)
# 启动监听, 注意: 这里是开启了一个新的守护线程, 所以程序如果结束, 该线程也会停止
# 这也符合我们的需求
observer.start()
main()
while True:
pass
下面就来演示一下:
创建一个文件
C:\Users\satori\Desktop\test\新建文本文档.txt被创建了
创建一个目录
C:\Users\satori\Desktop\test\新建文件夹 被创建了
重命名
C:\Users\satori\Desktop\test\新建文本文档.txt 被重命名为 C:\Users\satori\Desktop\test\1.txt
C:\Users\satori\Desktop\test\新建文件夹 被重命名为 C:\Users\satori\Desktop\test\test_child
将文件1.txt移动到子目录test_child, 所以此时会伴随一个创建、一个删除以及一个修改
C:\Users\satori\Desktop\test\1.txt 被删除了 //因为该文件移动之后相当于不存在了, 所以被删除了
C:\Users\satori\Desktop\test\test_child\1.txt 被创建了 //显然此时文件相当于被创建
C:\Users\satori\Desktop\test\test_child 被修改了
//因为test目录里面的文件变了, 因此相当于被修改了
//如果是文本, 那么会监控内容是否变化, 目录则监控内部文件的数量和位置是否有变化
修改文件1.txt
C:\Users\satori\Desktop\test\1.txt 被修改了
小结
使用方法非常简单,内部都帮你封装好了,所以watchdog这个包确实可以节省不少事情。
来源:https://www.cnblogs.com/traditional/p/13616918.html


猜你喜欢
- 一、使用SQL Server全文搜索配置要使用SQL Server的全文搜索服务,需要进行如下配置。1、开启全文搜索服务:2、开启数据库的全
- 1.前言选项(Options)模式是对配置(Configuration)的功能的延伸。在12章(ASP.NET Core中的配置二)Conf
- Python安装为什么默认安装到c盘?所有的软件如果你不对安装过程的路径进行设置的话都是默认安装到c盘的,不仅仅是Python。那安装到c盘
- 了兑现我对大家的承诺,我们现在立即就将“借助数据库和ASP程序”编写出来的,可以同时适用于IIS和P
- 如下所示:两个时间相差一整天,结果却是相差时间为零 !!!!这里是使用错误, .seconds只会计算 小时分钟秒 部分之间的差值在这里使用
- 自封装的打码类, windows下建议用打码兔(调用的官方dll),linux下建议超人打码(http api)# coding:utf-8
- proxytable代理根路径的同时增加其他代理Vue 项目有一个需求,需要对根路径 ‘/’ 进行代
- 本文实例为大家分享了python多线程http压力测试的具体代码,供大家参考,具体内容如下#coding=utf-8import sysim
- 什么是MyCAT一个彻底开源的,面向企业应用开发的大数据库集群支持事务、ACID、可以替代MySQL的加强版数据库一个可以视为MySQL集群
- 这篇文章主要介绍了Python如何使用函数做字典的值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- import timeimport paramikoclass HandleParamiko: '''
- 图片外框特征参数:①dashed:虚线 ②dotted:点虚线 ③solid:实线 ④double:双线 ⑤groove:沟槽状 ⑥ridg
- 在项目里碰到需要把类似'450000'的数字转换为会计记账所用的格式,'450,000.00',分隔千分位和
- 前言本篇文章分享一下我在实际开发小程序时遇到的需要获取用户当前位置的问题,在小程序开发过程中经常使用到的获取定位功能。uniapp官方也提供
- Python 3.7中一个令人兴奋的新特性是 data classes 。 数据类通常是一个主要包含数据的类,尽管实际上没有任何限制。 它是
- 工欲善其事必先利其器,估计大部分的pythoner都是从python IDE开始了python之路。有很多的python IDE工具可以用,
- python中的Reportlab模块reportlab模块是用python语言生成pdf文件的模块安装:pip install repor
- 前言闲暇时间抽个空写了个三国杀武将手册的小程序,中间有个需求设计的是合成武将皮肤图、竖排的武将姓名、以及小程序码,然后提供保存图片到相册,最
- 这里列出了13种实现图片或网页内容 lightbox 效果的方法,大部分是链接到各种lightbox作者的英文页面,里面都有源代码下载。Th
- 1. 安装yaml库想要使用python实现yaml与json格式互相转换,需要先下载pip,再通过pip安装yaml库。如何下载以及使用p