103 lines
3.0 KiB
Python
103 lines
3.0 KiB
Python
import os
|
|
import sys
|
|
import importlib
|
|
import traceback
|
|
from datetime import datetime
|
|
|
|
def run_tool(tool_name):
|
|
"""运行指定的工具脚本"""
|
|
print(f"\n{'='*50}")
|
|
print(f"开始执行 {tool_name}")
|
|
print(f"{'='*50}")
|
|
|
|
start_time = datetime.now()
|
|
print(f"开始时间: {start_time.strftime('%Y-%m-%d %H:%M:%S')}")
|
|
|
|
try:
|
|
# 导入工具模块
|
|
module = importlib.import_module(tool_name)
|
|
|
|
# 执行main函数
|
|
if hasattr(module, 'main'):
|
|
module.main()
|
|
print(f"\n✅ {tool_name} 执行成功")
|
|
else:
|
|
print(f"\n❌ {tool_name} 没有找到main函数")
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f"\n❌ {tool_name} 执行失败: {str(e)}")
|
|
traceback.print_exc()
|
|
return False
|
|
|
|
end_time = datetime.now()
|
|
duration = end_time - start_time
|
|
print(f"结束时间: {end_time.strftime('%Y-%m-%d %H:%M:%S')}")
|
|
print(f"耗时: {duration.total_seconds():.2f} 秒")
|
|
|
|
return True
|
|
|
|
def main():
|
|
"""主函数:依次执行所有工具"""
|
|
print("开始执行全部数据处理工具 (T1-T8)")
|
|
print(f"当前工作目录: {os.getcwd()}")
|
|
|
|
# 确保在Tools目录下执行
|
|
tools_dir = os.path.dirname(os.path.abspath(__file__))
|
|
os.chdir(tools_dir)
|
|
print(f"切换到工具目录: {tools_dir}")
|
|
|
|
# 将Tools目录添加到Python路径
|
|
if tools_dir not in sys.path:
|
|
sys.path.insert(0, tools_dir)
|
|
|
|
# 将项目根目录添加到Python路径
|
|
project_root = os.path.dirname(tools_dir)
|
|
if project_root not in sys.path:
|
|
sys.path.insert(0, project_root)
|
|
|
|
# 定义要执行的工具列表
|
|
tools = [
|
|
"T1_RenKou",
|
|
"T2_MaoRuXueLv",
|
|
"T3_SchoolCount",
|
|
"T4_ClassCount",
|
|
"T5_ZhaoShengCount",
|
|
"T6_ZaiXiaoShengCount",
|
|
"T7_TeacherCount",
|
|
"T8_SchoolMianJi"
|
|
]
|
|
|
|
# 记录执行结果
|
|
results = {}
|
|
|
|
# 依次执行每个工具
|
|
for tool in tools:
|
|
success = run_tool(tool)
|
|
results[tool] = success
|
|
|
|
# 如果某个工具执行失败,可以选择是否继续执行后续工具
|
|
if not success:
|
|
print(f"\n⚠️ {tool} 执行失败,但继续执行后续工具...")
|
|
|
|
# 打印执行结果摘要
|
|
print("\n" + "="*50)
|
|
print("执行结果摘要")
|
|
print("="*50)
|
|
|
|
success_count = sum(1 for result in results.values() if result)
|
|
total_count = len(results)
|
|
|
|
for tool, success in results.items():
|
|
status = "✅ 成功" if success else "❌ 失败"
|
|
print(f"{tool}: {status}")
|
|
|
|
print(f"\n总计: {success_count}/{total_count} 个工具执行成功")
|
|
|
|
if success_count == total_count:
|
|
print("🎉 所有工具执行完成!")
|
|
else:
|
|
print("⚠️ 部分工具执行失败,请检查错误信息")
|
|
|
|
if __name__ == "__main__":
|
|
main() |