你是否还在为成堆的文件重命名而烦恼?一张张照片,一段段视频,一个个文档,手动修改名字简直是噩梦!今天,我就来分享一个超级实用的Python脚本,让你彻底告别手动重命名的苦海,效率提升N倍!
需求分析
我们的目标是:
- 批量重命名:可以一次性处理一个文件夹下的所有文件。
- 自定义规则:可以根据自己的需求,灵活地添加序号、日期、前缀、后缀等等。
- 简单易用:即使不懂Python,也能轻松上手。
代码实现
import os
import datetime
def batch_rename(folder_path, rename_rule):
"""批量重命名文件夹中的文件。"""
try:
file_names = os.listdir(folder_path)
file_names.sort() # 排序,保证序号的正确性
for index, old_name in enumerate(file_names):
# 忽略文件夹
if os.path.isdir(os.path.join(folder_path, old_name)):
continue
new_name = rename_rule(index, old_name)
old_path = os.path.join(folder_path, old_name)
new_path = os.path.join(folder_path, new_name)
os.rename(old_path, new_path)
print(f'文件 "{old_name}" 重命名为 "{new_name}"')
print("重命名完成!")
except FileNotFoundError:
print(f"错误:文件夹 "{folder_path}" 未找到!")
except Exception as e:
print(f"发生错误:{e}")
def add_sequential_number(index, old_name):
"""添加序号的重命名规则。"""
return f"{index + 1}_{old_name}"
def add_date_prefix(index, old_name):
"""添加日期前缀的重命名规则。"""
now = datetime.datetime.now()
date_string = now.strftime("%Y%m%d")
return f"{date_string}_{old_name}"
if __name__ == "__main__":
folder_path = input("请输入文件夹路径:")
print("请选择重命名规则:")
print("1. 添加序号")
print("2. 添加日期前缀")
rule_choice = input("请输入规则编号:")
if rule_choice == "1":
rename_rule = add_sequential_number
elif rule_choice == "2":
rename_rule = add_date_prefix
else:
print("无效的规则编号,使用默认的添加序号规则")
rename_rule = add_sequential_number
batch_rename(folder_path, rename_rule)
代码解释
import os
:导入os
模块,用于处理文件和目录。import datetime
:导入datetime
模块,用于获取日期和时间。batch_rename(folder_path, rename_rule)
:核心函数,用于批量重命名文件。folder_path
:要重命名的文件夹路径。rename_rule
:一个函数,用于定义重命名规则,接受文件索引和旧文件名作为参数,返回新的文件名。os.listdir(folder_path)
:获取文件夹下的所有文件和文件夹名。os.path.join(folder_path, old_name)
:将文件夹路径和文件名拼接成完整的文件路径。os.rename(old_path, new_path)
:重命名文件。
add_sequential_number(index, old_name)
:添加序号的重命名规则。index
:文件索引,从0开始。old_name
:旧文件名。f"{index + 1}_{old_name}"
:使用f-string格式化字符串,将序号和旧文件名拼接成新的文件名。
add_date_prefix(index, old_name)
:添加日期前缀的重命名规则。datetime.datetime.now()
:获取当前日期和时间。now.strftime("%Y%m%d")
:将日期格式化为YYYYMMDD
的字符串。
if __name__ == "__main__"
:Python程序的入口点,只有当直接运行该脚本时,才会执行该代码块。input("请输入文件夹路径:")
:提示用户输入文件夹路径。input("请选择重命名规则:")
:提示用户选择重命名规则。
使用方法
- 保存代码:将代码保存为
.py
文件,例如rename.py
。 - 安装Python:如果你的电脑上还没有安装Python,请先安装Python 3.6或更高版本。(https://www.python.org/downloads/)
- 运行脚本:在命令行或终端中,进入脚本所在的目录,然后运行
python rename.py
。 - 输入文件夹路径:按照提示,输入你要重命名的文件夹路径。
- 选择重命名规则:按照提示,选择你要使用的重命名规则。
- 等待完成:脚本会自动重命名文件夹下的所有文件,并在完成后提示。
更多自定义规则
除了添加序号和日期前缀,你还可以根据自己的需求,自定义更多的重命名规则。例如:
添加前缀/后缀:
def add_prefix_suffix(index, old_name): prefix = "new_" suffix = "_processed" return f"{prefix}{old_name.split('.')[0]}{suffix}.{old_name.split('.')[-1]}"
替换文件名中的字符:
def replace_chars(index, old_name): new_name = old_name.replace(" ", "_").replace("-", "_") return new_name
截取文件名的一部分:
def truncate_name(index, old_name): return old_name[:10] # 截取前10个字符
只需要修改rename_rule
函数,就可以实现各种各样的重命名规则。
注意事项
- 备份文件:在运行脚本之前,建议先备份要重命名的文件,以防万一。
- 测试脚本:在批量重命名大量文件之前,先用少量文件进行测试,确保脚本能够正常工作。
- 谨慎操作:重命名文件是一个不可逆的操作,请务必谨慎操作。
- 处理文件夹:目前的脚本只会处理文件,会忽略文件夹。如果需要处理文件夹,需要修改代码。
总结
通过这个Python脚本,你可以轻松地批量重命名文件,节省大量的时间和精力。快去试试吧,让你的文件管理工作更加高效!希望这个教程对你有所帮助!如有任何问题,欢迎留言交流!