watchdog模块监控文件
watchdog用来监控指定目录/文件的变化,如添加删除文件或目录、修改文件内容、重命名文件或目录等,每种变化都会产生一个事件,且有一个特定的事件类与之对应,然后通过事件处理类来处理对应的事件,如何处理事件完全可以自定义,只需继承事件处理类的基类并重写对应的实例方法:
1 from watchdog.observers import Observer 2 from watchdog.events import * 3 import time 4 class FileEventHandler(FileSystemEventHandler): 5 def __init__(self): 6 FileSystemEventHandler.__init__(self) 7 def on_moved(self, event): 8 now = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) 9 if event.is_directory: 10 print(f"{now} 文件夹由 {event.src_path} 移动至 {event.dest_path}") 11 else: 12 print(f"{now} 文件由 {event.src_path} 移动至 {event.dest_path}") 13 def on_created(self, event): 14 now = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) 15 if event.is_directory: 16 print(f"{now} 文件夹 {event.src_path} 创建") 17 else: 18 print(f"{now} 文件 {event.src_path} 创建") 19 def on_deleted(self, event): 20 now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) 21 if event.is_directory: 22 print(f"{now} 文件夹 {event.src_path} 删除") 23 else: 24 print(f"{now} 文件 {event.src_path} 删除") 25 def on_modified(self, event): 26 now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) 27 if event.is_directory: 28 print(f"{now} 文件夹 {event.src_path} 修改") 29 else: 30 print(f"{now} 文件由 {event.src_path} 修改") 31 32 if __name__ == "__main__": 33 observer = Observer() 34 path = r"d:\test" 35 event_handler = FileEventHandler() 36 observer.schedule(event_handler,path,True) #True表示递归子目录 37 print(f"监控目录{path}") 38 observer.start() 39 observer.join()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具