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

Python实时监控文件变化的简单方法(watchdog.observersObserver())

发布时间:2024-01-10 15:21:40

Python中可以使用watchdog库实现实时监控文件变化。watchdog是一个用于监控文件变化的Python库,它可以监控文件或文件夹的状态变化,并在变化发生时触发回调函数。

使用watchdog库,首先需要安装watchdog库,可以使用以下命令进行安装:

pip install watchdog

以下是一个使用watchdog库监控文件变化的简单示例:

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

# 继承FileSystemEventHandler类,用于处理文件变化事件
class MyHandler(FileSystemEventHandler):
    def on_modified(self, event):
        # 文件被修改时触发
        print(f"File {event.src_path} was modified")

if __name__ == "__main__":
    # 创建Observer对象
    observer = Observer()

    # 创建事件处理对象
    event_handler = MyHandler()

    # 添加文件夹监控
    observer.schedule(event_handler, path='.', recursive=True)

    # 启动监控
    observer.start()

    try:
        while True:
            # 每隔1秒进行一次扫描
            time.sleep(1)
    except KeyboardInterrupt:
        # 停止监控
        observer.stop()
    
    # 等待observer线程完成
    observer.join()

在上述示例中,我们创建了一个自定义的事件处理类MyHandler,继承自FileSystemEventHandler。在MyHandler中,我们重写了on_modified方法,在文件被修改时会被调用,我们可以在该方法中添加自定义的处理逻辑。

main函数中,我们创建了一个Observer对象,并创建了一个MyHandler对象作为事件处理器。然后,我们使用observer.schedule方法将文件夹'.'(表示当前目录)以及其子目录添加到观察列表中。最后,使用observer.start启动监控。

try语句块中,我们使用time.sleep方法每隔1秒进行一次扫描,以便持续监听文件变化。如果有键盘中断(使用Ctrl+C),我们使用observer.stop停止监控,并使用observer.join等待observer线程完成。

以上就是使用watchdog库实现实时监控文件变化的简单方法。该方法可以适用于监控文件的修改、创建、删除等操作,在文件变化时可以根据需要执行相应的操作。