You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Python/Bash脚本:批量匹配Excel学号重命名学生PDF作业文件

解决方案

一、Python 脚本方案

Python 搭配 pandas 库能轻松处理 Excel 数据,是这类场景的首选方案:

准备工作

  • 安装依赖包:执行 pip install pandas openpyxl(适配 xlsx 格式的 Excel 文件)
  • 将你的学生信息 Excel 文件(比如命名为 student_list.xlsx)和脚本放在同一目录,或者在脚本中写对文件路径;目标作业文件夹为 Word Assignment 1

脚本代码

import os
import pandas as pd

# 配置参数,根据实际情况修改
excel_path = "student_list.xlsx"
target_folder = "Word Assignment 1"
# Excel 中学号列的名称,比如"学号"
id_column = "学号"
# Excel 中正确姓名列的名称,比如"正确姓名"
name_column = "正确姓名"

# 读取 Excel 数据,转为「学号:正确姓名」的字典
student_data = pd.read_excel(excel_path).set_index(id_column)[name_column].to_dict()

# 遍历目标文件夹里的 PDF 文件
for filename in os.listdir(target_folder):
    if not filename.endswith(".pdf"):
        continue  # 只处理 PDF 格式文件
    
    # 提取文件名首段的学号
    split_result = filename.split("-", 1)
    if len(split_result) < 2:
        print(f"跳过格式异常文件:{filename}")
        continue
    
    student_id = split_result[0].strip()
    # 检查学号是否在字典中存在
    if student_id not in student_data:
        print(f"未找到学号 {student_id} 对应的姓名,跳过文件:{filename}")
        continue
    
    correct_name = student_data[student_id]
    # 构建符合要求的新文件名
    new_filename = f"{student_id}-{correct_name}-PHASE 1-MS WORD-ASSIGNMENT 1.pdf"
    old_file_path = os.path.join(target_folder, filename)
    new_file_path = os.path.join(target_folder, new_filename)
    
    # 执行重命名
    os.rename(old_file_path, new_file_path)
    print(f"已完成重命名:{filename} → {new_filename}")

使用步骤

  1. 修改脚本中的配置参数,匹配你的实际文件路径和 Excel 列名
  2. 运行脚本:python rename_assignments.py

二、Bash 脚本方案

Bash 本身无法直接读取 Excel,需要先将 Excel 转成 CSV 格式再处理:

准备工作

  • 安装 csvkit 工具(用于 Excel 转 CSV):Debian/Ubuntu 执行 sudo apt install csvkit,Mac 执行 brew install csvkit
  • 将 Excel 转成 CSV:in2csv student_list.xlsx > student_list.csv
  • 确认 CSV 文件中学号和正确姓名的列位置(比如学号在第1列,姓名在第2列)

脚本代码

#!/bin/bash

# 配置参数,根据实际情况修改
CSV_FILE="student_list.csv"
TARGET_DIR="Word Assignment 1"
# 学号所在的列索引(从1开始计数)
ID_COL=1
# 正确姓名所在的列索引(从1开始计数)
NAME_COL=2

# 构建「学号:姓名」的关联数组
declare -A student_map
while IFS=, read -r id name others; do
    student_map["$id"]="$name"
done < "$CSV_FILE"

# 进入目标文件夹处理文件
cd "$TARGET_DIR" || exit 1
for pdf_file in *.pdf; do
    if [ ! -f "$pdf_file" ]; then
        continue
    fi
    
    # 提取文件名首段的学号
    student_id=$(echo "$pdf_file" | cut -d'-' -f1 | xargs)
    if [ -z "$student_id" ]; then
        echo "跳过格式异常文件:$pdf_file"
        continue
    fi
    
    # 检查学号是否存在
    if [ -z "${student_map[$student_id]}" ]; then
        echo "未找到学号 $student_id 对应的姓名,跳过文件:$pdf_file"
        continue
    fi
    
    correct_name="${student_map[$student_id]}"
    # 构建新文件名
    new_pdf_file="${student_id}-${correct_name}-PHASE 1-MS WORD-ASSIGNMENT 1.pdf"
    mv "$pdf_file" "$new_pdf_file"
    echo "已完成重命名:$pdf_file → $new_pdf_file"
done

使用步骤

  1. 修改脚本中的配置参数,匹配你的实际文件路径和 CSV 列索引
  2. 给脚本添加执行权限:chmod +x rename_assignments.sh
  3. 运行脚本:./rename_assignments.sh

内容的提问来源于stack exchange,提问作者Dhinesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:25:51