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

使用watchdog.observers模块监控文件夹的创建和删除

发布时间:2023-12-19 00:03:48

watchdog是一个用于监控文件系统事件的Python库,可以监视文件夹的创建、删除、改名、移动等操作。watchdog.observers模块是watchdog库的一部分,它包含用于观察文件系统事件的类和函数。

下面是一个使用watchdog.observers模块监控文件夹的创建和删除的例子:

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

class MyHandler(FileSystemEventHandler):
    def on_created(self, event):
        if event.is_directory:
            print(f"Directory created: {event.src_path}")
        else:
            print(f"File created: {event.src_path}")

    def on_deleted(self, event):
        if event.is_directory:
            print(f"Directory deleted: {event.src_path}")
        else:
            print(f"File deleted: {event.src_path}")

if __name__ == '__main__':
    path = '/path/to/folder'  # 监控的文件夹路径

    event_handler = MyHandler()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)
    observer.start()

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

在上面的例子中,我们定义了一个MyHandler类,继承自FileSystemEventHandler类。MyHandler类中的on_created方法处理文件夹或文件创建事件,on_deleted方法处理文件夹或文件删除事件。

__main__函数中,我们指定要监控的文件夹路径,并创建一个MyHandler实例和一个Observer实例。然后,我们使用observer.schedule方法将事件处理程序与文件夹路径关联起来,并调用observer.start方法开始监控。

最后,我们使用一个try-except块确保监控不被意外中断,并在收到键盘中断信号时调用observer.stop方法停止监控,然后调用observer.join方法等待所有线程结束。

可以根据实际需要对MyHandler类进行扩展,以处理其他类型的文件系统事件,如文件修改、文件移动等。

注意,使用watchdog库需要先安装watchdog库,可以使用pip命令进行安装:

pip install watchdog

上述例子可以用于监控某个文件夹的创建和删除事件。你可以根据具体需求修改MyHandler类中的方法以处理其他事件。