Python Watchdog 实行对文件或目录的监控

watchdog 库支持多平台,受到越来越多的关注。顾名思义,watchdog库就是对文件或者目录(event)来监控以及作出反应。我们对文件作出删除,生成,修改和移动时,event就代表你所做的行为传入到FileSystemEvent类进行处理,然后通过FileSystemEventHandler来作出反应。

FileSystemEvent(event)—>FileSystemEventHandler(event)
即:

  1. watchdog.event.Dir/FileDeletedEvent(event)**—>**self.on_deleted(event)
  2. watchdog.event.Dir/FileCreatedEvent(event)**—>**self.on_created(event)
  3. watchdog.event.Dir/FileModifiedEvent(event)**—>**self.on_modified(event)
  4. watchdog.event.Dir/FileMovedEvent(event)**—>**self.on_moved(event)

以上这些监控和改变均是通过watchdog.observers.Observer()来实现的。

以下为官方实例:

import sys
import time
import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler

if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO,
                        format='%(asctime)s - %(message)s',
                        datefmt='%Y-%m-%d %H:%M:%S')
    path = sys.argv[1] if len(sys.argv) > 1 else '.'
    event_handler = LoggingEventHandler()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里是Python使用watchdog库对文件进行监控的代码示例: ``` import time from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler class MyHandler(FileSystemEventHandler): def on_any_event(self, event): # 监控到任何事件都会触发该函数 if event.is_directory: return elif event.event_type == 'created': # 处理文件创建事件 print("文件创建:", event.src_path) elif event.event_type == 'modified': # 处理文件修改事件 print("文件修改:", event.src_path) elif event.event_type == 'deleted': # 处理文件删除事件 print("文件删除:", event.src_path) if __name__ == "__main__": event_handler = MyHandler() observer = Observer() observer.schedule(event_handler, path='/path/to/watch', recursive=True) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join() ``` 在代码中,FileSystemEventHandler 是watchdog库提供的一个类,用于处理文件系统事件。在这个类中,我们可以重写 on_any_event() 方法,该方法会在监控目录中有任何文件事件发生时触发。通过判断事件类型,我们可以处理不同的事件。 在主程序中,我们创建了一个 MyHandler 的实例 event_handler,并将其与监控路径绑定。然后创建了一个 Observer 的实例 observer,并将其与 event_handler 绑定。接着,我们启动了 observer,不断监控指定路径的文件变化。当用户按下 Ctrl+C 时,我们会通过 observer.stop() 停止监控,并通过 observer.join() 等待 observer 线程结束。 请注意,在使用该代码前,你需要先安装 watchdog 库,可以使用 pip install watchdog 命令进行安装。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值