监控多个目录的文件变化-使用watchdog.observers的方法
发布时间:2023-12-19 00:02:29
监控多个目录的文件变化可以使用watchdog库中的watchdog.observers.Observer方法。这个方法可以创建一个观察者对象,用来监控文件或目录的变化。
首先,需要安装watchdog库。可以使用pip命令来安装watchdog:
pip install watchdog
下面是一个使用watchdog.observers的例子,可以监控多个目录的文件变化:
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
# 继承FileSystemEventHandler类,并重写on_any_event方法
class MyHandler(FileSystemEventHandler):
def on_any_event(self, event):
if event.is_directory:
# 目录的创建、删除事件
if event.event_type == 'created':
print(f"创建目录: {event.src_path}")
elif event.event_type == 'deleted':
print(f"删除目录: {event.src_path}")
else:
# 文件的创建、删除、修改事件
if event.event_type == 'created':
print(f"创建文件: {event.src_path}")
elif event.event_type == 'deleted':
print(f"删除文件: {event.src_path}")
elif event.event_type == 'modified':
print(f"修改文件: {event.src_path}")
if __name__ == "__main__":
# 需要监控的目录列表
folders_to_monitor = ["/path/to/folder1", "/path/to/folder2"]
event_handler = MyHandler()
observer = Observer()
# 添加需要监控的目录
for folder in folders_to_monitor:
observer.schedule(event_handler, folder, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
上面的代码定义了一个MyHandler类,继承自FileSystemEventHandler类,并重写了on_any_event方法。该方法根据事件类型输出相应的信息。
在主程序中,我们创建了一个Observer对象,并指定了要监控的目录列表。然后创建了一个MyHandler对象作为事件处理器,并将其与每个目录关联起来。最后,调用observer的start方法开始监控。
当有文件或目录发生变化时,on_any_event方法会被调用,并输出相应的信息。
请注意,由于监控是一个持续的过程,因此使用一个while循环来保持程序运行。当按下Ctrl+C时,程序会停止监控并退出。
这就是使用watchdog.observers监控多个目录的文件变化的方法,通过上述代码示例,你可以根据自己的需求进行修改和扩展。
