欢迎访问宙启技术站
智能推送

Python中watchdog.observers使用Observer()实现文件夹监控的方法

发布时间:2024-01-04 10:04:17

在Python中,可以使用watchdog库来监控文件夹中的文件变化。watchdog库是一个跨平台的Python库,可以用于监控文件和文件夹的变化,并触发事件。

要使用watchdog库进行文件夹监控,首先需要创建一个监控器(observer),然后注册一个处理器(handler)来处理触发的事件。其基本的使用方法如下:

1. 导入所需模块:

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

2. 定义一个处理器,继承自FileSystemEventHandler类,处理文件或文件夹变化时的事件:

class MyHandler(FileSystemEventHandler):
    def on_any_event(self, event):
        print(event)

3. 创建一个监控器对象,通过调用Observer类创建,同时注册一个处理器:

observer = Observer()
event_handler = MyHandler()
observer.schedule(event_handler, path='/path/to/folder', recursive=True)

4. 启动监控器,开始监控文件夹:

observer.start()

5. 在监控文件夹的过程中,可以处理其他任务,比如让程序保持运行状态:

try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()
observer.join()

下面是一个完整的文件夹监控的例子,监控目标文件夹中的文件创建、修改、删除等事件,并打印出相关信息:

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 None
        elif event.event_type == 'created':
            print(f"Created: {event.src_path}") # 文件被创建
        elif event.event_type == 'modified':
            print(f"Modified: {event.src_path}") # 文件被修改
        elif event.event_type == 'deleted':
            print(f"Deleted: {event.src_path}") # 文件被删除

if __name__ == "__main__":
    path = '/path/to/folder' # 监控的文件夹路径
    event_handler = MyHandler()
    observer = Observer()
    observer.schedule(event_handler, path=path, recursive=True)
    observer.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

请注意,示例中的/path/to/folder需要替换为实际需要监控的文件夹的路径。此外,可以根据需要修改处理器的on_any_event方法,以实现自定义的处理逻辑。

这是一个简单的使用watchdog库实现文件夹监控的例子,可以根据自己的需求扩展和修改。