| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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}")
|