使用Python的watchdog.observersObserver()实现监控指定文件后缀的变化
发布时间:2024-01-10 15:22:42
watchdog.observers.Observer()是watchdog模块中的一个观察者类,用于监控指定的文件或文件夹,并在文件或文件夹发生变化时触发相应的事件处理方法。
下面是一个使用Python的watchdog.observers.Observer()实现监控指定文件后缀的变化的例子:
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class MyHandler(FileSystemEventHandler):
def __init__(self, file_ext):
super().__init__()
self.file_ext = file_ext
def on_modified(self, event):
if not event.is_directory and event.src_path.endswith(self.file_ext):
print(f"File {event.src_path} modified")
if __name__ == "__main__":
path = "/path/to/folder" # 监控文件夹路径
file_ext = ".txt" # 监控文件后缀
event_handler = MyHandler(file_ext)
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
上述代码首先定义了一个类MyHandler,继承自watchdog.events.FileSystemEventHandler,并重写了其中的on_modified方法。在on_modified方法中,判断event事件是否是文件而不是文件夹,并且后缀名是否是指定的file_ext后缀,如果满足条件,则打印出文件路径及其变化的信息。
在主函数中,首先设置了观察的文件夹路径path和要监控的文件后缀file_ext。然后创建了一个MyHandler实例event_handler,并将其作为事件处理器传递给Observer实例observer的schedule方法。最后调用observer的start方法开始监控。
在主函数的try-except语句中,通过捕获KeyboardInterrupt异常来停止观察器。调用observer的stop方法停止监控,并通过observer的join方法等待观察器的线程完成。
使用上述代码,可以实时监控指定文件夹下所有指定后缀名的文件变化,并根据需要进行相应的操作。
