Python自动化:一键搞定“文件批量重命名”

在日常办公或整理资料时,你是否遇到过这样的崩溃时刻:

  • 下载了几百张素材图片,名字全是乱码(如 ad3f12.jpg),想改成有序的 img_001.jpg
  • 要把项目文件夹里几十个文件的"副本"字样全部删掉?
  • 想给所有备份文件加上今天的日期后缀?

核心工具与准备

不需要安装任何第三方库,我们使用Python自带的 os 模块即可完成操作。

核心函数

  • os.listdir(path): 获取指定目录下的所有文件名。
  • os.rename(src, dst): 将文件从 src(原路径)重命名为 dst(新路径)。
  • os.path.join(path, name): 智能拼接路径,兼容Windows和Mac系统。

💡 场景一:按顺序批量编号(整理照片/素材)

需求: 将乱七八糟的文件名统一修改为 前缀_序号.扩展名 的格式,例如 Photo_001.jpg

适用场景: 摄影师整理照片、深度学习数据集预处理、壁纸库整理。

📜 代码实现

Python

复制代码

javascript

体验AI代码助手

代码解读

复制代码

import os def batch_rename_sequence(folder_path, prefix="File", start_index=1): # 1. 获取文件夹内所有文件 try: files = os.listdir(folder_path) except FileNotFoundError: print("❌ 找不到文件夹,请检查路径!") return # 2. 循环处理每一个文件 # enumerate生成带索引的序列,i从0开始,所以需要+start_index for i, filename in enumerate(files): # 排除隐藏文件(如Mac下的.DS_Store) if filename.startswith('.'): continue # 获取文件后缀名 (例如 .jpg) file_ext = os.path.splitext(filename)[1] # 3. 构建新名字 # :03d 表示数字补零对齐,例如 1 -> 001, 12 -> 012 new_name = f"{prefix}_{start_index + i:03d}{file_ext}" # 4. 拼接完整路径 old_path = os.path.join(folder_path, filename) new_path = os.path.join(folder_path, new_name) # 5. 执行重命名 os.rename(old_path, new_path) print(f"✅ [重命名成功]: {filename} -> {new_name}") # --- 使用示例 --- # 请将路径替换为你实际的文件夹路径 target_folder = r"C:\Users\Admin\Pictures\Travel" batch_rename_sequence(target_folder, prefix="Travel_Japan", start_index=1)


场景二:关键词替换与清洗(办公文档处理)

需求: 删除文件名中多余的字符(如" - 副本"),或者将文件名中的空格替换为下划线。

适用场景: 处理从网盘批量下载的文件、整理同事发来的命名不规范的文档。

代码实现

Python

复制代码

javascript

体验AI代码助手

代码解读

复制代码

import os def batch_replace_keyword(folder_path, target_word, replace_word=""): files = os.listdir(folder_path) count = 0 for filename in files: # 如果文件名中包含目标关键词 if target_word in filename: # 1. 生成新文件名 (字符串替换) new_name = filename.replace(target_word, replace_word) # 2. 拼接路径 old_path = os.path.join(folder_path, filename) new_path = os.path.join(folder_path, new_name) # 3. 避免文件名冲突 (如果新名字已经存在,则跳过) if os.path.exists(new_path): print(f"⚠️ [跳过] 目标文件已存在: {new_name}") continue os.rename(old_path, new_path) print(f"🔨 [清洗完成]: {filename} -> {new_name}") count += 1 print(f"🎉 总计处理了 {count} 个文件。") # --- 使用示例 --- # 场景:把 " - 副本" 删掉,相当于替换为空字符串 work_dir = r"D:\Work\Reports\2024" batch_replace_keyword(work_dir, target_word=" - 副本", replace_word="")


场景三:修改文件扩展名(格式转换后处理)

需求: 批量将所有的 .txt 文件后缀修改为 .md(Markdown格式),或者将 .jpeg 统一为 .jpg

适用场景: 代码工程迁移、特定软件格式兼容、日志文件处理。

代码实现

Python

复制代码

javascript

体验AI代码助手

代码解读

复制代码

import os def batch_change_extension(folder_path, old_ext, new_ext): # 确保扩展名带点,例如 .txt if not old_ext.startswith('.'): old_ext = '.' + old_ext if not new_ext.startswith('.'): new_ext = '.' + new_ext files = os.listdir(folder_path) for filename in files: # 检查是否以旧后缀结尾 if filename.endswith(old_ext): # 1. 分离文件名和后缀 base_name = os.path.splitext(filename)[0] # 2. 组合新名字 new_name = base_name + new_ext # 3. 执行重命名 os.rename( os.path.join(folder_path, filename), os.path.join(folder_path, new_name) ) print(f"🔄 [格式转换]: {filename} -> {new_name}") # --- 使用示例 --- # 场景:将文件夹内所有 .htm 文件改为 .html web_dir = r"/var/www/html/project" batch_change_extension(web_dir, ".htm", ".html")


🛡️ 最佳实践:如何防止"一键火葬场"?

批量重命名一旦出错,恢复起来非常麻烦(除非你有备份)。强烈建议在执行 os.rename 之前,先增加一个 "演习模式"(Dry Run)

给代码加上"安全锁"

我们可以封装一个更通用的函数,增加一个 dry_run 参数:

Python

复制代码

javascript

体验AI代码助手

代码解读

复制代码

import os def safe_rename(folder_path, dry_run=True): files = os.listdir(folder_path) print(f"🔍 当前模式: {'演习模式 (不实际修改)' if dry_run else '实战模式 (谨慎操作)'}") print("-" * 40) for i, filename in enumerate(files): if filename.startswith('.'): continue # 假设逻辑是:加前缀 "2025_" new_name = f"2025_{filename}" if dry_run: # 演习模式:只打印,不执行 print(f"👁️ [预览] {filename} ---> {new_name}") else: # 实战模式:真正动手 old_p = os.path.join(folder_path, filename) new_p = os.path.join(folder_path, new_name) os.rename(old_p, new_p) print(f"✅ [已修改] {filename} ---> {new_name}") # --- 使用建议 --- # 第一步:先设为 True,运行看打印结果是否符合预期 safe_rename(r"D:\TestFiles", dry_run=True) # 第二步:确认无误后,改为 False 再次运行 # safe_rename(r"D:\TestFiles", dry_run=False)

相关推荐
追光天使1 小时前
Python的后端框架
python
姚华军1 小时前
利用Python算法,解析PDF文件并生成文档分块Chunks,追加到RagFlow知识库
开发语言·python·pdf·chunks·ragflow
dagouaofei1 小时前
AI自动生成你的年度报告PPT
人工智能·python·powerpoint
嫂子的姐夫1 小时前
01-selenium
爬虫·python·selenium·自动化
m0_661279181 小时前
学习笔记-安装并启动 Jupyter Noteboo
开发语言·python
xwill*1 小时前
3D-GENERALIST: Vision-Language-Action Models for Crafting 3D Worlds
人工智能·pytorch·python·深度学习
serve the people1 小时前
tensorflow tf.Module 的检查点Checkpoint机制
人工智能·python·tensorflow
gCode Teacher 格码致知1 小时前
Python 3.8.8环境下离线安装python-docx的完整方案-由Deepseek产生
python