""" 文件工具函数 """ import os from pathlib import Path from loguru import logger def detect_file_type(filename: str) -> str: """ 根据文件名检测文件类型 Args: filename: 文件名 Returns: 文件类型: 'pdf' | 'docx' | 'txt' Raises: ValueError: 不支持的文件格式 """ ext = filename.lower().split('.')[-1] if ext == 'pdf': return 'pdf' elif ext == 'docx': return 'docx' elif ext == 'txt': return 'txt' else: raise ValueError(f"不支持的文件格式: .{ext}") def cleanup_temp_file(file_path: Path | str) -> None: """ 清理临时文件 Args: file_path: 文件路径 """ try: if isinstance(file_path, str): file_path = Path(file_path) if file_path.exists(): file_path.unlink() logger.debug(f"清理临时文件: {file_path}") except Exception as e: logger.warning(f"清理临时文件失败: {str(e)}") def get_file_size_mb(file_path: Path | str) -> float: """ 获取文件大小(MB) Args: file_path: 文件路径 Returns: 文件大小(MB) """ if isinstance(file_path, str): file_path = Path(file_path) if file_path.exists(): return file_path.stat().st_size / (1024 * 1024) return 0.0 def validate_file_size(file_size: int, max_size: int = 52428800) -> bool: """ 验证文件大小 Args: file_size: 文件大小(字节) max_size: 最大允许大小(字节),默认50MB Returns: 是否通过验证 """ return file_size <= max_size