记录一次watchdog observer切换监听目录
代码实现
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class WatchFiles(object):
"""
监听文件类
"""
observer = Observer()
@classmethod
def stop(cls):
"""
停止当前文件监听
因为每个线程对象只能调用一下start所以这里在把哈上一次的终止完成之后从新创建一个observer对象
:return:
"""
if cls.observer.is_alive():
cls.observer.stop()
cls.observer.join(1)
cls.observer = Observer()
@classmethod
def main(cls, file_path, handler):
if not isinstance(handler, FileSystemEventHandler):
raise ValueError('handler 必须是FileSystemEventHandler类')
cls.observer.schedule(handler, path=file_path, recursive=True)
cls.observer.start()
try:
while cls.observer.is_alive():
time.sleep(1)
cls.observer.join(1)
finally:
cls.observer.stop()
cls.observer.join()
大致流程图
