概述
首先声明,本文讨论的 watchdog,不是单片机里的 watchdog,也不是 linux 中的 watchdog,而是 python 世界里用来监视文件系统变化的一个第三方模块。在 python 中文件监视主要有两个库,一个是 pyinotify,一个是 watchdog。pyinotify 依赖于 linux 平台的 inotify 机制,只能应用在 linux 平台上。watchdog 则对不同平台的的事件都进行了封装,不仅可以监视 windows 文件系统,也可以监视 linux 的文件系统。
文件系统事件类
文件系统事件基类定义如下:
watchdog.events.FileSystemEvent(event_type, src_path, is_directory=False)
# event.event_type- 事件类型,为 moved / deleted / created / modified 其中之一
# event.src_path- 触发该事件的文件或目录路径
# event.is_directory- 该事件是否由一个目录触发
由 watchdog.events.FileSystemEvent 基类派生的子类如下:
watchdog.events.FileDeletedEvent()
# 文件被删除时触发该事件
watchdog.events.DirDeletedEvent()
# 目录被删除时触发该事件
watchdog.events.FileCreatedEvent()
# 文件被创建时触发该事件
watchdog.events.DirCreatedEvent()
# 目录被创建时触发该事件
watchdog.events.FileModifiedEvent()
# 文件被修改时触发该事件(修改文件内容、修改文件inode信息如权限和访问时间,都会触发该事件)
watchdog.events.DirModifiedEvent()
# 目录被修改时触发该事件
watchdog.events.FileMovedEvent()
# 文件被移动或重命名时触发该事件,因为涉及文件移动,所以除了event.src_path表示原路径,还有event.dest_path表示目的路径
watchdog.events.DirMovedEvent()
# 目录被移动或重命名时触发该事件,因为涉及文件移动,所以除了event.src_path表示原路径,还有event.dest_path表