python watchdog_watchdog---在python中创建看门狗,监控文件系统变化

watchdog---在python中创建看门狗,监控文件系统变化

看门狗是一款小软件,可以监控文件和目录是否发生变化,watchdog就是一款可以监控文件系统变化的第三方模块,当被监视的区域发生文件或目录的创建,修改,或者删除时,就可以引发特定的事件,我们只需要编写针对这些事件的函数即可处理这些变化。

1. 安装和导入

使用pip来安装

pip install watchdog

导入所需要的模块

import time

from watchdog.observers import Observer

from watchdog.events import PatternMatchingEventHandler

2. 创建事件处理对象

在创建事件处理对象时,有很多有用的参数需要进行设置

watch_patterns = "*.py;*.txt" # 监控文件的模式

ignore_patterns = "" # 设置忽略的文件模式

ignore_directories = False # 是否忽略文件夹变化

case_sensitive = True # 是否对大小写敏感

event_handler = PatternMatchingEventHandler(watch_patterns, ignore_patterns, ignore_directories, case_sensitive)

watch_patterns 设置监控文件的模式,如果你想监控所有文件,那么设置成"*" 即可,我所设置的模式只会监控以.py 和 .txt结尾的文件

ignore_patterns 设置忽略的文件模式,我这里没有忽略任何文件

ignore_directories 设置为True表示忽略文件夹的变化

case_sensitive 设置大小写是否敏感,如果设置为True,那么修改文件名称时,如果只是大小写发生变化,那么则不会被监控

3. 处理事件

def on_created(event):

print(f"{event.src_path}被创建")

def on_deleted(event):

print(f"{event.src_path}被删除")

def on_modified(event):

print(f"{event.src_path} 被修改")

def on_moved(event):

print(f"{event.src_path}被移动到{event.dest_path}")

event_handler.on_created = on_created

event_handler.on_deleted = on_deleted

event_handler.on_modified = on_modified

event_handler.on_moved = on_moved

一共有四种事件需要处理,对应的,编写4个函数

4. 创建观察者

最终,我们需要创建一个观察者,来负责启动监控任务

watch_path = "/Users/kwsy/data/test" # 监控目录

go_recursively = True # 是否监控子文件夹

my_observer = Observer()

my_observer.schedule(event_handler, watch_path, recursive=go_recursively)

my_observer.start()

try:

while True:

time.sleep(1)

except KeyboardInterrupt:

my_observer.stop()

my_observer.join()

watch_path 设置监控的目录

go_recursively 设置为True表示监控子文件夹

一个观察者可以多次使用schedule方法来监控文件系统,这样,我们可以一次监控多个区域,每个区域使用不同的监控策略。

现在,在所监控的目录下执行新建文件的操作,就会被这段程序所监控到,并使用on_created函数做相应的处理。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值