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

使用watchdog.events实现文件系统事件监听的Python代码示例

发布时间:2023-12-27 03:18:28

下面是一个使用watchdog.events实现文件系统事件监听的Python代码示例:

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

class MyEventHandler(FileSystemEventHandler):
    def on_created(self, event):
        if event.is_directory:
            print(f"它创建了一个目录:{event.src_path}")
        else:
            print(f"它创建了一个文件:{event.src_path}")

    def on_modified(self, event):
        if event.is_directory:
            print(f"它修改了一个目录:{event.src_path}")
        else:
            print(f"它修改了一个文件:{event.src_path}")

    def on_deleted(self, event):
        if event.is_directory:
            print(f"它删除了一个目录:{event.src_path}")
        else:
            print(f"它删除了一个文件:{event.src_path}")

if __name__ == "__main__":
    path = "path/to/directory"  # 监听的目录
    event_handler = MyEventHandler()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)

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

在这个示例中,我们定义了一个MyEventHandler类,它继承自FileSystemEventHandler。在MyEventHandler中,我们覆盖了on_createdon_modifiedon_deleted等方法,这些方法会在对应的文件系统事件发生时被调用,并打印相应的信息。

if __name__ == "__main__":块中,我们指定了要监听的目录path,然后创建了一个MyEventHandler实例和一个Observer实例。通过observer.schedule(event_handler, path, recursive=True)方法,我们告诉observer对象要监听path目录下的事件,并把事件处理器event_handler与之关联。

接下来,我们调用observer.start()方法启动事件监听。然后使用一个无限循环while True:来让程序保持运行状态,直到用户按下KeyboardInterrupt键(Ctrl+C)停止监听。最后,我们调用observer.stop()方法停止监听,然后调用observer.join()方法等待所有子线程结束。

你可以把path改成需要监听的实际目录,然后运行这个代码,它会在文件或目录被创建、修改或删除的时候打印相应的信息。