查看“Python文件系统监控”的源代码
←
Python文件系统监控
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==实训背景== 运维工作离不开文件系统的监控,如某个目录被删除,或者某个文件被修改、移动、删除时需要执行一定的操作或发出报警。当然,读者可能会想到使用循环检查文件或目录的信息来满足上述需求,也不是不可以,但这不是一个最好的方案,一是因为循环操作会不停地执行指令太耗CPU,二是不够实时,循环操作中会放一些等待指令,如time.sleep(3)来减少CPU的消耗,这就会导致监控的时机有一定的滞后,不够实时。本节介绍一个第三方库watchdog来实现文件系统监控,其原理是通过操作系统的事件触发的,不需要循环,也不需要等待。 ===watchdog介绍=== watchdog用来监控指定目录/文件的变化,如添加删除文件或目录、修改文件内容、重命名文件或目录等,每种变化都会产生一个事件,且有一个特定的事件类与之对应,然后通过事件处理类来处理对应的事件 ===watchdog安装=== pip3 install watchdog ==运行实例== <nowiki>from watchdog.observers import Observer from watchdog.events import * import time class FileEventHandler(FileSystemEventHandler): def __init__(self): FileSystemEventHandler.__init__(self) def on_moved(self, event): super(FileEventHandler, self).on_moved(event) now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) if event.is_directory: print(f"{ now } 文件夹由 { event.src_path } 移动至 { event.dest_path }") else: print(f"{ now } 文件由 { event.src_path } 移动至 { event.dest_path }") def on_created(self, event): super(FileEventHandler, self).on_created(event) now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) if event.is_directory: print(f"{ now } 文件夹 { event.src_path } 创建") else: print(f"{ now } 文件 { event.src_path } 创建") def on_deleted(self, event): super(FileEventHandler, self).on_deleted(event) now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) if event.is_directory: print(f"{ now } 文件夹 { event.src_path } 删除") else: print(f"{ now } 文件 { event.src_path } 删除") def on_modified(self, event): super(FileEventHandler, self).on_modified(event) now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) if event.is_directory: print(f"{ now } 文件夹 { event.src_path } 修改") else: print(f"{ now } 文件 { event.src_path } 修改") if __name__ == "__main__": observer = Observer() path = r"d:\tttt" event_handler = FileEventHandler() observer.schedule(event_handler, path, True) print(f"监控目录 {path}") observer.start() observer.join() </nowiki> 输出: <nowiki>监控目录 d:\tttt 2020-01-17 09:28:55 文件 d:\tttt\新建文本文档.txt 创建 2020-01-17 09:29:11 文件 d:\tttt\新建文本文档.txt 修改 2020-01-17 09:29:34 文件 d:\tttt\新建文本文档.txt 删除 </nowiki> 运维场景中以下场合非常适合使用watchdog: <nowiki>1)监控文件系统中文件或目录的增、删、改情况 (2)当特定的文件被创建、删除、修改、移动时执行相应的任务</nowiki> 思考:如何用watchdog模块来做一个安全保卫软件,如果系统文件被改变时,报警 ==改进方案== 参考文档:https://www.cnblogs.com/xiehy/p/11413502.html
返回至
Python文件系统监控
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息