monitor_file.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import os
  2. import time
  3. from watchdog.observers import Observer
  4. from watchdog.events import FileSystemEventHandler
  5. from tools.logger_handle import logger
  6. from tools.oss_client import MinioClient, oss_handle
  7. class FileSaveHandler(FileSystemEventHandler):
  8. def __init__(self, serve_client):
  9. self.serve_client = serve_client
  10. super().__init__()
  11. def on_modified(self, event):
  12. ext = os.path.splitext(event.src_path)[-1]
  13. if '~$' in event.src_path:
  14. return
  15. if ext in ['.docx', '.doc', '.ppt', '.pptx', '.xls', '.xlsx']:
  16. logger.info(f"[文件修改] 文件已保存: {event.src_path}, 执行上传操作。")
  17. res = self.serve_client.upload_file(event.src_path)
  18. if res:
  19. logger.info(f'文件{event.src_path}上传成功')
  20. else:
  21. logger.info(f'文件{event.src_path}上传失败')
  22. def start_watchdog(serve_client, work_path):
  23. event_handler = FileSaveHandler(serve_client)
  24. observer = Observer()
  25. observer.schedule(event_handler, work_path, recursive=True)
  26. observer.start()
  27. logger.info('watch dog start')
  28. try:
  29. while True:
  30. time.sleep(1)
  31. except KeyboardInterrupt:
  32. observer.stop()
  33. observer.join()
  34. if __name__ == '__main__':
  35. start_watchdog()
  36. # print(os.listdir('../test/'))