日常工作中你是不是也遇到过这种场景:整理旅行照片时,一堆 “img_001.jpg、img_002.jpg” 看得眼花缭乱;处理工作文档时,需要给几十个文件统一加项目前缀;想把文件名里的错别字批量改掉,手动改到崩溃……
其实根本不用这么费劲,今天就教你写一个超实用的python小脚本,30行代码实现文件批量重命名,支持加前缀/后缀、批量替换字符,新手也能轻松上手,彻底解放双手!
先说说这个脚本能干嘛?
这个脚本核心解决“批量处理文件名”的问题,比如:
- 给 100 张旅行照片统一加上“2024_云南行_”前缀
- 把所有文件里的“初稿”替换成“终版”
- 给文档批量加“_部门审核”后缀
- 组合使用:加前缀+替换关键词,一次搞定
全程不用复杂操作,改个文件夹路径就能用,还加了防错校验,不用担心改坏文件。
直接上代码(可复制即用)
先把完整代码贴出来,我会逐行解释关键部分,放心抄作业~
import os
def batch_rename_files(folder_path, prefix="", suffix="", replace_old="", replace_new=""):
"""
批量重命名文件夹中的文件
:param folder_path: 目标文件夹路径(比如c:\照片\旅行)
:param prefix: 要加的文件名前缀
:param suffix: 要加的文件名后缀
:param replace_old: 要替换的旧字符串(比如"img")
:param replace_new: 替换后的新字符串(比如"旅行")
"""
# 先检查文件夹是否存在,避免输错路径
if not os.path.isdir(folder_path):
print(f"❌ 错误:文件夹 {folder_path} 不存在!")
return
# 只获取文件,跳过子文件夹(避免误改文件夹名)
file_list = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]
if not file_list:
print("📂 文件夹里没有可重命名的文件!")
return
# 统计重命名的文件数
rename_count = 0
for old_name in file_list:
# 拆分文件名和扩展名(比如"img_001.jpg"拆成"img_001"和".jpg")
# 重点:避免把扩展名也改了,导致文件打不开
name, ext = os.path.splitext(old_name)
# 替换文件名里的指定字符
new_name = name.replace(replace_old, replace_new)
# 加上前缀和后缀
new_name = f"{prefix}{new_name}{suffix}{ext}"
# 拼接完整路径(必须用完整路径,否则会把文件移到当前目录)
old_path = os.path.join(folder_path, old_name)
new_path = os.path.join(folder_path, new_name)
# 避免文件名没变化时重复操作
if old_path != new_path:
os.rename(old_path, new_path)
rename_count += 1
print(f"✅ 已重命名:{old_name} -> {new_name}")
print(f"\n🎉 重命名完成!一共改了 {rename_count} 个文件")
# 这里是使用示例,改下面的参数就行!
if __name__ == "__main__":
# 第一步:替换成你的文件夹路径(windows用r开头避免转义,mac/linux直接写路径)
target_folder = r"c:\users\你的名字\pictures\2024旅行照片"
# 第二步:设置重命名规则,按需修改
batch_rename_files(
folder_path=target_folder, # 目标文件夹
prefix="2024_云南行_", # 加前缀
replace_old="img", # 把"img"替换成
replace_new="照片" # "照片"
# suffix="_已整理", # 可选:加后缀,需要就取消注释
)
关键代码解释(新手也能懂)
不用怕看不懂代码,核心逻辑就这几点:
1. 先做 “安全校验”
脚本开头先检查文件夹是否存在、里面有没有文件,避免因为输错路径白忙活,也防止新手误操作。
2. 拆分文件名和扩展名(重点!)
用os.path.splitext()把文件名和后缀分开处理,比如 “报告.docx” 拆成 “报告” 和 “.docx”,只改前面的文件名,保证文件格式不会被改乱(比如不会把.jpg 改成.jpg.txt)。
3. 灵活的重命名规则
prefix:给文件名加前缀,比如给所有照片加 “2024_云南行_”suffix:给文件名加后缀,比如加 “_财务部”replace_old/replace_new:批量替换字符,比如把 “初稿” 改成 “终版”
这几个参数可以单独用,也可以组合用,比如既加前缀又替换关键词。
4. 避免重复操作
判断新旧文件名是否一样,不一样才执行重命名,避免无意义的操作,也防止报错。
怎么用?超简单 3 步
- 复制代码:把上面的代码保存成
rename_files.py(随便起个名字,后缀是.py 就行); - 改参数:找到代码最下面的
target_folder,替换成你要处理的文件夹路径,再根据需求改prefix/replace_old这些参数; - 运行脚本:打开命令行,进入脚本所在目录,输入
python rename_files.py,回车就能看到重命名进度。
举个实际例子
比如我有一堆旅行照片,文件名是:
img_1234.jpg img_1235.jpg img_1236.jpg
我想改成:
2024_云南行_照片1234.jpg 2024_云南行_照片1235.jpg 2024_云南行_照片1236.jpg
只需要把参数改成这样:
batch_rename_files(
folder_path=r"c:\users\xxx\pictures\云南行",
prefix="2024_云南行_",
replace_old="img_",
replace_new="照片"
)
运行脚本,几秒钟就搞定,比手动改快100倍!
小提醒(避坑指南)
- 备份文件:第一次用建议先复制一份文件到测试文件夹,确认没问题再处理原文件;
- 路径格式:windows 路径用
r"路径"(比如r"c:\照片"),避免反斜杠被转义;mac/linux 直接写/users/xxx/照片; - 特殊字符:文件名别加冒号、星号这些非法字符,否则会报错;
- 权限问题:如果提示 “权限不足”,右键以管理员身份运行脚本。
最后说两句
这个小脚本虽然简单,但真的能解决日常工作中的大 麻烦。其实 python 的魅力就在于此 —— 不用写复杂的代码,就能快速解决实际问题。
如果你还有其他批量处理文件的需求(比如按时间重命名、按类型分类),可以在这个脚本基础上改,比如加个按序号命名的功能,或者筛选特定格式的文件(只改.jpg,不改.png)。
以上就是使用python脚本批量搞定所有文件重命名的详细内容,更多关于python实现文件重命名的资料请关注代码网其它相关文章!
发表评论