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

使用Python的watchdog.events模块监听文件系统事件的示例

发布时间:2023-12-27 03:20:31

Python的watchdog库是一个用于监视文件系统事件的库。它通过注册监听器来捕捉文件或目录的变化,例如文件的创建、修改或删除。

首先,我们需要安装watchdog库。可以使用pip命令进行安装:

pip install watchdog

接下来,我们可以创建一个Python脚本来使用watchdog库。以下是一个示例:

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_modified(self, event):
        if event.is_directory:
            print(f"Directory modified: {event.src_path}")
        else:
            print(f"File modified: {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}")

# 创建一个观察者对象
observer = Observer()
# 创建一个事件处理器对象
event_handler = MyHandler()
# 监听当前目录及其子目录下的文件系统事件
observer.schedule(event_handler, ".", recursive=True)
# 启动观察者
observer.start()
try:
    # 持续运行脚本
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    # 用户按下ctrl+C结束脚本时,关闭观察者
    observer.stop()
# 等待观察者线程结束
observer.join()

在上述示例中,我们定义了一个继承自FileSystemEventHandler的事件处理器类MyHandler。该类中包含了三个方法on_createdon_modifiedon_deleted,分别对应文件或目录的创建、修改和删除事件。在这些方法中,我们可以编写相应的逻辑来处理这些事件。

接下来,我们创建了一个观察者对象observer,并通过schedule方法将事件处理器对象event_handler注册到观察者中。我们指定监听当前目录及其子目录下的文件系统事件。然后,使用start方法启动观察者。

最后,我们使用一个无限循环来让脚本持续运行,直到用户按下ctrl+C结束。在循环中,使用sleep方法来间隔一秒钟,以避免CPU占用过高。当用户按下ctrl+C时,我们调用stop方法关闭观察者,并使用join方法等待观察者线程结束。

运行脚本后,可以在文件系统中创建、修改或删除文件或目录,观察到相应的事件被打印出来。

这就是使用Python的watchdog库监听文件系统事件的简单示例。使用watchdog库,我们可以方便地监视文件系统的变化,并根据需要采取相应的操作。