在日常工作或学习中,我们经常需要对大量文件进行重命名。手动操作一个一个改名既费时又费力,这时候可以使用 Python 脚本来自动完成这项任务。
本文将介绍一个使用 Python 的简单脚本,可以帮助您批量重命名指定目录下的所有文件。
脚本分析
import os
def batch_rename_files(directory, prefix):
"""
批量重命名指定目录下的文件名称。
参数:
directory (str): 目标目录路径。
prefix (str): 新文件名的前缀。
"""
# 检查目录是否存在
if not os.path.isdir(directory):
print("错误:指定的目录路径不存在。")
return
# 获取目录中的所有文件,并按照文件名进行排序
files = sorted(os.listdir(directory))
num_files = len(files)
# 循环遍历文件
for index, filename in enumerate(files):
# 跳过 .DS_Store 文件
if filename == ".DS_Store":
continue
# 构造新的文件名
new_filename = f"{prefix}_{index}{os.path.splitext(filename)[1]}"
# 构造旧文件路径和新文件路径
old_filepath = os.path.join(directory, filename)
new_filepath = os.path.join(directory, new_filename)
# 检查新文件名是否已经存在
if os.path.exists(new_filepath):
print(f"警告:文件 {new_filename} 已经存在,将跳过重命名。")
continue
try:
# 重命名文件
os.rename(old_filepath, new_filepath)
print(f"Renamed {filename} to {new_filename}")
except Exception as e:
print(f"Error renaming {filename}: {e}")
# 检查是否有文件漏掉
if num_files != len(os.listdir(directory)):
print("警告:部分文件被漏掉或丢失。")
# 用户输入目录路径和前缀
directory = input("请输入目录路径(例如:/Users/xxx/Desktop/Folder):")
prefix = input("请输入文件名前缀:")
# 执行批量重命名
batch_rename_files(directory, prefix)
脚本详解:
- 导入
os
模块,用于操作文件和目录。 - 定义
batch_rename_files
函数,用于批量重命名文件。 - 检查目标目录是否存在,如果不存在则报错。
- 获取目录中的所有文件,并按照文件名进行排序。
- 循环遍历每个文件:
- 跳过
.DS_Store
文件。 - 构造新的文件名,格式为
前缀_索引_扩展名
。 - 构造旧文件路径和新文件路径。
- 检查新文件名是否已经存在,如果存在则跳过。
- 尝试重命名文件,并捕获异常。
- 检查是否有文件被漏掉或丢失。
- 从用户输入中获取目录路径和文件名前缀。
- 调用
batch_rename_files
函数执行批量重命名。
使用方法
- 将上述代码保存为
.py
文件,例如rename_files.py
。 - 打开命令行终端,并导航到保存脚本的目录。
- 使用以下命令执行脚本:
python rename_files.py
- 按照提示输入目录路径和文件名前缀,然后脚本将自动批量重命名该目录下的所有文件。
注意
- 确保您拥有对目标目录的读写权限。
- 脚本默认按照文件名对文件进行排序,如果您需要按照其他方式排序,可以修改
files = sorted(os.listdir(directory))
这行代码。 - 脚本会跳过
.DS_Store
文件,如果您需要重命名这些文件,可以修改if filename == ".DS_Store": continue
这行代码。 - 脚本会检查新文件名是否已经存在,如果存在则跳过。如果您希望覆盖已存在的同名文件,可以修改
if os.path.exists(new_filepath): continue
这行代码。
总结
这个 Python 脚本可以帮助您快速、轻松地批量重命名文件,节省您的时间和精力。您可以根据自己的需求修改脚本,使其更加灵活好用。