FileUtils.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import os
  2. import zipfile
  3. from pathlib import Path
  4. from datetime import datetime
  5. from Utils.Log import log_for_api
  6. logger = log_for_api()
  7. def zip_directory(source_dir, output_path):
  8. """将目录压缩为ZIP文件"""
  9. try:
  10. with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
  11. for root, dirs, files in os.walk(source_dir):
  12. for file in files:
  13. file_path = os.path.join(root, file)
  14. # 在ZIP文件中保持相对路径
  15. arcname = os.path.relpath(file_path, source_dir)
  16. zipf.write(file_path, arcname)
  17. logger.info(f"目录已成功压缩: {output_path}")
  18. return True
  19. except Exception as e:
  20. logger.error(f"压缩目录时出错: {e}")
  21. return False
  22. def create_archive_filename(base_name="allure_report"):
  23. """创建带时间戳的归档文件名"""
  24. timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
  25. return f"{base_name}_{timestamp}.zip"
  26. def cleanup_old_archives(directory, max_files=10):
  27. """清理旧的归档文件,只保留最近的一些文件"""
  28. try:
  29. files = sorted(Path(directory).iterdir(), key=os.path.getmtime)
  30. if len(files) > max_files:
  31. for file in files[:-max_files]:
  32. file.unlink()
  33. logger.info(f"已删除旧归档文件: {file}")
  34. except Exception as e:
  35. logger.error(f"清理旧归档文件时出错: {e}")