fix:优化启动方式
This commit is contained in:
@@ -6,6 +6,7 @@ import pandas as pd
|
||||
from loguru import logger
|
||||
from pptx import Presentation
|
||||
from rich.console import Console
|
||||
import traceback
|
||||
|
||||
import comtypes.client
|
||||
from config.config import load_config
|
||||
@@ -65,8 +66,6 @@ def generate_template():
|
||||
except Exception as e:
|
||||
logger.error(f"程序运行出错: {str(e)}")
|
||||
# 打印详细报错位置,方便调试
|
||||
import traceback
|
||||
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
|
||||
@@ -83,11 +82,10 @@ def generate_comment_all():
|
||||
if "评价" not in df.columns:
|
||||
df["评价"] = ""
|
||||
|
||||
# --- 获取总行数,用于日志 ---
|
||||
# 强制将“评价”列转换为 object 类型
|
||||
# 获取学生数据行数
|
||||
total_count = len(df)
|
||||
logger.info(f"开始生成学生评语,共 {total_count} 位学生...")
|
||||
|
||||
# 强制将“评价”列转换为 object 类型
|
||||
df["评价"] = df["评价"].astype("object")
|
||||
# --- 遍历 DataFrame 的索引 (index) ---
|
||||
# 这样我们可以通过索引 i 精准地把数据写回某一行
|
||||
@@ -121,28 +119,27 @@ def generate_comment_all():
|
||||
logger.info(f"[{i + 1}/{total_count}] 正在生成评价: {name}")
|
||||
|
||||
try:
|
||||
# 调用你的生成函数,并【接收返回值】
|
||||
# 注意:这里假设 generate_comment 返回的是清洗后的字符串
|
||||
# 调用AI大模型生成内容
|
||||
generated_text = generate_comment(
|
||||
name, config["age_group"], traits, sex
|
||||
)
|
||||
|
||||
# --- 将结果写入 DataFrame ---
|
||||
df.at[i, "评价"] = generated_text
|
||||
|
||||
if generated_text:
|
||||
# 赋值
|
||||
df.at[i, "评价"] = str(generated_text).strip()
|
||||
else:
|
||||
df.at[i, "评价"] = "" # 防空处理
|
||||
logger.success(f"学生:{name},评语生成完毕")
|
||||
|
||||
# 可选:每生成 5 个就保存一次,防止程序崩溃数据丢失
|
||||
# 可选:每生成 5 个就保存一次
|
||||
if (i + 1) % 5 == 0:
|
||||
df.to_excel(excel_path, index=False)
|
||||
logger.info("--- 阶段性保存成功 ---")
|
||||
|
||||
time.sleep(1) # 避免触发API速率限制
|
||||
|
||||
logger.success("✅ 阶段性保存成功")
|
||||
# 避免触发API速率限制
|
||||
time.sleep(1)
|
||||
except Exception as e:
|
||||
logger.error(f"学生:{name},生成评语出错: {str(e)}")
|
||||
|
||||
# --- 修改点 4: 循环结束后最终保存文件 ---
|
||||
# --- 循环结束后最终保存文件 ---
|
||||
# index=False 表示不把 pandas 的索引 (0,1,2...) 写到 Excel 第一列
|
||||
df.to_excel(excel_path, index=False)
|
||||
logger.success(f"所有评语已生成并写入文件:{excel_path}")
|
||||
@@ -151,8 +148,6 @@ def generate_comment_all():
|
||||
logger.error(f"保存失败!请先关闭 Excel 文件:{config['excel_file']}")
|
||||
except Exception as e:
|
||||
logger.error(f"程序运行出错: {str(e)}")
|
||||
import traceback
|
||||
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
|
||||
@@ -306,9 +301,6 @@ def generate_report():
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"程序运行出错: {str(e)}")
|
||||
# 打印详细报错位置,方便调试
|
||||
import traceback
|
||||
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
|
||||
@@ -320,9 +312,8 @@ def batch_convert_folder(folder_path):
|
||||
【推荐】批量转换文件夹下的所有 PPT (只启动一次 PowerPoint,速度快)
|
||||
已修复多线程 CoInitialize 报错,并适配 GUI 日志
|
||||
"""
|
||||
# 【核心修复 1】子线程初始化 COM 组件
|
||||
# 子线程初始化 COM 组件
|
||||
pythoncom.CoInitialize()
|
||||
|
||||
try:
|
||||
folder_path = os.path.abspath(folder_path)
|
||||
if not os.path.exists(folder_path):
|
||||
@@ -429,6 +420,4 @@ def generate_zodiac():
|
||||
logger.error(f"找不到文件 {config.get('excel_file')}")
|
||||
except Exception as e:
|
||||
logger.error(f"程序运行出错: {str(e)}")
|
||||
import traceback
|
||||
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
Reference in New Issue
Block a user