#!/usr/bin/env python3 """ 乐谱文件质量检查工具 检查文件大小、格式和完整性 """ import os from pathlib import Path def check_file_quality(file_path, min_size=50000): """ 检查单个文件的质量 Args: file_path: 文件路径 min_size: 最小文件大小(字节) Returns: dict: 质量检查结果 """ path = Path(file_path) if not path.exists(): return {"valid": False, "error": "文件不存在"} size = path.stat().st_size suffix = path.suffix.lower() result = { "valid": True, "file": str(path), "size": size, "format": suffix, "quality": "high" if size >= min_size else "low", } # 格式检查 if suffix not in [".png", ".jpg", ".jpeg", ".pdf", ".ly"]: result["valid"] = False result["error"] = f"不支持的文件格式: {suffix}" # 大小检查 if size < min_size: result["warning"] = f"文件较小 ({size} bytes),可能质量较低" return result def batch_check_directory(directory, min_size=50000): """ 批量检查目录中的文件 Args: directory: 目录路径 min_size: 最小文件大小阈值 Returns: list: 所有文件的检查结果 """ results = [] path = Path(directory) if not path.exists(): return [{"valid": False, "error": f"目录不存在: {directory}"}] for file_path in path.glob("*"): if file_path.is_file(): results.append(check_file_quality(file_path, min_size)) return results def print_report(results): """打印质量检查报告""" total_files = len(results) valid_files = sum(1 for r in results if r.get("valid", False)) high_quality_files = sum(1 for r in results if r.get("quality") == "high") print(f"=== 乐谱质量检查报告 ===") print(f"总文件数: {total_files}") print(f"有效文件: {valid_files}") print(f"高质量文件: {high_quality_files}") print(f"低质量文件: {total_files - high_quality_files}") print("\n--- 详细信息 ---") for result in results: status = "✅" if result.get("valid", False) else "❌" quality = result.get("quality", "unknown") print(f"{status} {result['file']} ({result['size']} bytes, {quality})") if "warning" in result: print(f" ⚠️ {result['warning']}") if "error" in result: print(f" ❌ {result['error']}") if __name__ == "__main__": import sys if len(sys.argv) != 2: print("用法: python quality_check.py <目录路径>") sys.exit(1) directory = sys.argv[1] results = batch_check_directory(directory) print_report(results)