import os import zipfile from pathlib import Path from datetime import datetime from Utils.Log import log_for_api logger = log_for_api() def zip_directory(source_dir, output_path): """将目录压缩为ZIP文件""" try: with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf: for root, dirs, files in os.walk(source_dir): for file in files: file_path = os.path.join(root, file) # 在ZIP文件中保持相对路径 arcname = os.path.relpath(file_path, source_dir) zipf.write(file_path, arcname) logger.info(f"目录已成功压缩: {output_path}") return True except Exception as e: logger.error(f"压缩目录时出错: {e}") return False def create_archive_filename(base_name="allure_report"): """创建带时间戳的归档文件名""" timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") return f"{base_name}_{timestamp}.zip" def cleanup_old_archives(directory, max_files=10): """清理旧的归档文件,只保留最近的一些文件""" try: files = sorted(Path(directory).iterdir(), key=os.path.getmtime) if len(files) > max_files: for file in files[:-max_files]: file.unlink() logger.info(f"已删除旧归档文件: {file}") except Exception as e: logger.error(f"清理旧归档文件时出错: {e}")