python在windows中监听文件是否有操作
pip install watchdog 安装需要的包
class MyHandler(FileSystemEventHandler): def __init__(self): f = open('config.js') j = json.load(f) for c in j["config"]: if c["file_path"]: self.file_path = c["file_path"] break else: raise RuntimeError('没有设置有效配置参数') def on_modified(self, event): print("文件被修改了 %s" % event.src_path) def on_created(self, event): # start_new_thread启动线程 # 参数一:调用的方法名 参数二:元组传递调用的方法要使用的参数 _thread.start_new_thread(theard_method,(event.src_path,)) watch_files=get_img_file(event.src_path) if len(watch_files)>0: insertsql_dectimg(watch_files) print("文件被创建了 %s" % event.src_path) if __name__ == "__main__": event_handler = MyHandler() observer = Observer() observer.schedule(event_handler, event_handler.file_path, recursive=True) observer.start() #observer.join()
文件系统事件类
文件系统事件基类定义如下:
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表示目的路径
文件系统事件处理类
watchdog.events.FileSystemEventHandler 是事件处理器的基类,用于处理事件,用户需继承该类,并在子类中重写对应方法。需要用户重写的方法有:
self.on_any_event(event)#任何事件发生都会首先执行该方法,该方法默认为空,dispatch()方法会先执行该方法,然后再把 event 分派给其他方法处理
self.on_moved(event)#处理 DirMovedEvent 和 FileMovedEvent 事件,默认为空
self.on_created(event)#处理 DirCreatedEvent 和 FileCreatedEvent 事件,默认为空
self.on_deleted(event)#处理 DirDeletedEvent 和 FileDeletedEvent 事件,默认为空
self.on_modified(event)#处理 DirModifiedEvent 和 FileModifiedEvent 事件,默认为空
以上方法中,event 有几个属性可用:
event.is_directory - 触发事件的是否为文件夹
event.src_path - 源路径
event.dest_path - 目标路径

浙公网安备 33010602011771号