import os import time from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler from tools.logger_handle import logger from tools.oss_client import MinioClient, oss_handle class FileSaveHandler(FileSystemEventHandler): def __init__(self, serve_client): self.serve_client = serve_client super().__init__() def on_modified(self, event): ext = os.path.splitext(event.src_path)[-1] if '~$' in event.src_path: return if ext in ['.docx', '.doc', '.ppt', '.pptx', '.xls', '.xlsx']: logger.info(f"[文件修改] 文件已保存: {event.src_path}, 执行上传操作。") res = self.serve_client.upload_file(event.src_path) if res: logger.info(f'文件{event.src_path}上传成功') else: logger.info(f'文件{event.src_path}上传失败') def start_watchdog(serve_client, work_path): event_handler = FileSaveHandler(serve_client) observer = Observer() observer.schedule(event_handler, work_path, recursive=True) observer.start() logger.info('watch dog start') try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join() if __name__ == '__main__': start_watchdog() # print(os.listdir('../test/'))