北京网站优化厂家品牌网站建设小蝌蚪
2026/4/15 10:51:19 网站建设 项目流程
北京网站优化厂家,品牌网站建设小蝌蚪,网页制作常用的技术有哪些,动漫制作专业学校前十名文章目录1 概述2 安装watchdog3 使用示例更多精彩内容#x1f449;内容导航 #x1f448;#x1f449;Qt开发 #x1f448;#x1f449;python开发 #x1f448;1 概述 python实现实时监控文件的创建、修改、删除操作 跟踪文件夹内容的增删改变化 可用于文件发生变化时…文章目录1 概述2 安装watchdog3 使用示例更多精彩内容内容导航 Qt开发 python开发 1 概述python实现实时监控文件的创建、修改、删除操作跟踪文件夹内容的增删改变化可用于文件发生变化时自动触发相应处理逻辑实现热重载机制如配置文件更新后自动重新加载事件去抖动防抖同一个文件1秒内多次事件只处理一次。基于watchdog实现watchdog 是一个用于监控文件系统事件的 Python 库它能够监听文件或目录的变化如创建、修改、删除和移动等操作。这个库在需要实时响应文件系统变化的场景中非常有用比如自动构建系统、日志监控、文件同步工具等。主要组件Observer观察者对象负责监控指定路径的文件系统事件。它会持续运行一个后台线程来监听事件。FileSystemEventHandler事件处理器基类用户需要继承这个类并重写相应的事件处理方法来定义对特定事件的响应。Event事件对象代表一个具体的文件系统事件包含了事件类型和相关文件路径等信息。典型应用场景开发工具代码编辑器监听源文件变化实现自动刷新构建工具监听源码变更触发重新编译文件同步服务监控本地文件夹变化同步到云端实现文件实时备份功能系统管理监控配置文件变化并动态调整程序行为跟踪重要目录的安全变更记录2 安装watchdog使用命令行pip install watchdog进行安装3 使用示例importtimeimportosfrompathlibimportPathfromwatchdog.observersimportObserverfromwatchdog.eventsimportFileSystemEventHandlerclassWatchdogHandler(FileSystemEventHandler):def__init__(self):self._file_pathNoneself.last_modified{}# 上次修改时间defset_target_file(self,target_file): 设置监控的目标文件 :param target_file: :return: ifPath(target_file).is_file()andos.path.exists(target_file):self._file_pathtarget_fileelse:raiseFileNotFoundError(f{target_file}不存在)defdispatch(self,event): 对事件进行分发处理过滤掉非目标文件的事件 :param event: :return: # 忽略临时文件ifevent.src_path.endswith(~):return# 如果没有设置目标文件则处理所有事件ifself._file_pathisNone:super().dispatch(event)else:# 判断是否是目标文件如果是则处理该事件ifos.path.abspath(event.src_path)os.path.abspath(self._file_path):super().dispatch(event)defon_modified(self,event): 文件修改事件处理 nowtime.time()# 每个文件1秒内只响应一次ifnow-self.last_modified.get(event.src_path,0)1:self.last_modified[event.src_path]nowprint(f文件被修改:{event.src_path})defon_created(self,event): 文件创建事件处理 print(f文件被创建:{event.src_path})defon_deleted(self,event): 文件删除事件处理 print(f文件被删除:{event.src_path})classWatchdogPath:def__init__(self):self.observerObserver()defstop(self):self.observer.stop()defwatchdog_path(self,target_path): 监控指定路径的文件或目录变化 :param target_path: 目标路径可以是文件或目录 ifnotos.path.exists(target_path):print(f{target_path}不存在)returntarget_pathos.path.abspath(target_path)# 获取绝对路径event_handlerWatchdogHandler()# 如果是文件则设置目标文件ifPath(target_path).is_file():event_handler.set_target_file(target_path)target_pathos.path.dirname(target_path)or.# 获取文件所在目录self.observer.schedule(event_handler,target_path,recursiveFalse)self.observer.start()# 启动监控在后台线程运行# 使用示例if__name____main__:# target_path E:/Code/PythonProject2/test.pyproject# target_path ./test.pyprojecttarget_path./wWatchdogPath()w.watchdog_path(target_path)w.observer.join()# 等待线程结束

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询