这是一个用于自动化管理学生作业的 Python 工具集,包含名单提取、邮件下载、提交检查和作业批改功能。
本系统依赖 Python 3 环境。在使用前,请确保安装了以下第三方库:
pip install pandas openpyxlpandas: 用于处理 Excel 名单数据。openpyxl:pandas读取.xlsx文件所需的引擎。
其他库(如 imaplib, email, json, os, re 等)均为 Python 标准库,无需额外安装。
mail.py 脚本用于从 QQ 邮箱自动下载作业附件。为了使其正常工作,您需要配置 IMAP 服务并获取授权码。
- 登录网页版 QQ 邮箱。
- 点击顶部 设置 -> 账号。
- 向下滚动找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 部分。
- 开启 IMAP/SMTP服务。
- 开启服务时,系统会要求进行验证(如短信验证)。
- 验证通过后,系统会显示一串 授权码(通常是16位字母,不包含空格)。
- 请注意:这串授权码就是您的“密码”,请妥善保管。
打开 mail.py 文件,找到以下代码段(约第 8-11 行),将邮箱地址和授权码替换为您自己的:
# 连接到QQ邮箱IMAP服务器
mail = imaplib.IMAP4_SSL("imap.qq.com")
# 请将下方的账号和授权码替换为您自己的
# 第一个参数: 您的QQ邮箱地址
# 第二个参数: 步骤二中获取的16位授权码 (不是QQ登录密码!)
mail.login("您的QQ号@qq.com", "您的授权码")您可以通过运行 main.py 来统一调用以下功能:
python3 main.py- 功能: 从 Excel 文件(默认为
总名单.xlsx)中提取学生学号和姓名。 - 输出: 生成
students.json文件,供后续模块使用。
- 功能: 连接配置好的 QQ 邮箱,搜索指定日期范围内的邮件。
- 特点:
- 自动识别邮件主题或附件名中的“实验X”或“作业X”进行分类。
- 自动下载附件到
downloads/目录下的对应文件夹(如LAB4,课堂作业2)。 - 智能重命名:如果附件文件名缺失身份信息,会自动尝试用邮件主题补全(例如加上学号姓名)。
- 功能: 对比
students.json名单和downloads/下指定文件夹内的文件。 - 输出: 生成提交情况报告(包含已提交和未提交名单),并计算提交率。
- 功能: 交互式批改助手。
- 操作:
- 输入要批改的文件夹名称。
- 程序会自动打开第一个作业文件。
- 在终端输入分数后,程序会自动记录并打开下一个文件。
- 支持跳过 (
s) 和中途退出保存 (q)。
- 输出: 生成
文件夹名_grades.json成绩单。
VS Code 默认将 Word 文档视为文本文件打开,会导致乱码。为了在批改时正常预览 Word 文档,强烈建议安装以下插件:
- Office Viewer (插件ID:
cweijan.vscode-office)- 安装后,点击
.docx或.doc文件即可在 VS Code 中直接预览内容。
- 安装后,点击
如果 VS Code 无法预览 PDF,建议安装:
- PDF Viewer (插件ID:
tomoki1207.pdf) 或类似插件。