如何使用Python基于Excel名称列表修改文件名称的末尾部分
Python 按修改时间排序+Excel列表批量追加文件名解决方案
前置依赖
首先安装需要的第三方库:pip install pandas openpyxl
实现逻辑
- 读取Excel文件中存储的名称列表
- 读取目标文件夹下的所有文件,按最后修改时间排序
- 逐文件拆分原文件名和后缀,将对应位置的名称追加到文件名主体后,拼接后缀生成新文件名
- 执行重命名操作
完整可运行代码
import os import pandas as pd # -------------------------- 配置参数(请修改为你自己的路径/参数) -------------------------- EXCEL_PATH = "你的名称列表文件路径.xlsx" # 存储名称列表的Excel文件路径 TARGET_FOLDER = "待重命名文件所在文件夹路径" # 需要批量重命名的文件所在的文件夹 NAME_COLUMN_INDEX = 0 # 名称在Excel的第几列,第一列填0,第二列填1,以此类推 EXCEL_HAS_HEADER = False # Excel第一行是不是表头,是就填True,不是填False # ---------------------------------------------------------------------------------------- # 1. 读取Excel中的名称列表 header = 0 if EXCEL_HAS_HEADER else None name_df = pd.read_excel(EXCEL_PATH, header=header) name_list = name_df.iloc[:, NAME_COLUMN_INDEX].tolist() # 2. 读取目标文件夹下的所有文件,按最后修改时间升序排序(最早修改的排在最前) file_list = [] for filename in os.listdir(TARGET_FOLDER): file_full_path = os.path.join(TARGET_FOLDER, filename) # 仅保留文件,过滤掉文件夹 if os.path.isfile(file_full_path): file_list.append(filename) # 按修改时间排序 file_list.sort(key=lambda x: os.path.getmtime(os.path.join(TARGET_FOLDER, x))) # 3. 校验文件数量和名称数量是否匹配 if len(file_list) != len(name_list): raise ValueError(f"文件数量({len(file_list)})与Excel中名称数量({len(name_list)})不匹配,请检查后重试") # 4. 执行批量重命名 for idx, old_filename in enumerate(file_list): # 拆分原文件的名称主体和后缀 file_base_name, file_ext = os.path.splitext(old_filename) # 生成新文件名:原名称主体 + 追加的名称 + 原后缀 new_filename = f"{file_base_name}{name_list[idx]}{file_ext}" # 拼接完整路径 old_full_path = os.path.join(TARGET_FOLDER, old_filename) new_full_path = os.path.join(TARGET_FOLDER, new_filename) # 重命名 os.rename(old_full_path, new_full_path) print(f"重命名完成:{old_filename} → {new_filename}")
注意事项
- 运行脚本前务必先备份所有待重命名的文件,避免操作失误导致文件命名混乱无法恢复
- 若需要按修改时间从新到旧排序,将排序代码改为:
file_list.sort(key=lambda x: -os.path.getmtime(os.path.join(TARGET_FOLDER, x))) - 若仅需要处理特定后缀的文件,可以在过滤文件的步骤添加后缀判断,比如仅处理csv文件:
if os.path.isfile(file_full_path) and filename.endswith('.csv')
内容的提问来源于stack exchange,提问作者Haris Iqbal
相关产品推荐
相关产品推荐

