使用watchdog.observersObserver()实时监控指定目录下的文件夹变化
发布时间:2024-01-10 15:24:22
使用watchdog库的Observer类可以创建一个观察者对象,用于实时监控指定目录下的文件夹变化。观察者对象可以注册一个或多个处理程序,用于在文件夹发生变化时执行相应的操作。
以下是一个使用Observer实现实时监控指定目录的例子:
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class MyHandler(FileSystemEventHandler):
def on_any_event(self, event):
# 文件夹发生变化时执行的操作
print(f"{event.event_type}: {event.src_path}")
if __name__ == "__main__":
# 指定要监控的目录
path = "path_to_directory"
# 创建观察者对象
observer = Observer()
# 实例化处理程序
handler = MyHandler()
# 将处理程序添加到观察者对象
observer.schedule(handler, path, recursive=True)
# 启动观察者对象
observer.start()
try:
while True:
# 持续监控目录的变化
time.sleep(1)
except KeyboardInterrupt:
# 按下Ctrl+C停止观察者对象
observer.stop()
# 等待观察者对象停止
observer.join()
在上述例子中,我们定义了一个MyHandler类,继承自FileSystemEventHandler。在MyHandler类中,我们重写了on_any_event方法,在文件夹发生变化时执行相应的操作。可以根据需要自定义MyHandler类,重写其他的方法来处理特定类型的事件,比如on_created处理文件创建事件,on_modified处理文件修改事件等。
在if __name__ == "__main__":代码块中,我们指定了要监控的目录路径,创建了一个观察者对象,并实例化了MyHandler处理程序。然后将处理程序添加到观察者对象中,并通过observer.schedule方法指定要监控的目录以及递归地监控子目录。
接着,我们通过observer.start()方法启动观察者对象,并在一个无限循环中持续监控目录的变化。在按下Ctrl+C时,通过observer.stop()方法停止观察者对象。
最后,我们通过observer.join()方法等待观察者对象停止。
通过以上代码,我们可以实时监控指定目录下的文件夹变化,并根据需要执行相应的操作。
