import os
import openpyxl
from openpyxl.utils.exceptions import InvalidFileException
def rename_images(base_dir, excel_path):
# 检查基础路径是否存在
if not os.path.exists(base_dir):
print(f"错误:提供的总地址不存在 - {base_dir}")
return
# 检查Excel文件是否存在
if not os.path.exists(excel_path):
print(f"错误:提供的Excel表格地址不存在 - {excel_path}")
return
# 尝试加载Excel表格
try:
workbook = openpyxl.load_workbook(excel_path)
except InvalidFileException:
print(f"错误:无法打开或识别Excel文件 - {excel_path}")
return
sheet = workbook.active
# 创建一个字典来存储Excel表格中的文件夹名称和对应的新名称
name_mapping = {}
for row in sheet.iter_rows(min_row=2, values_only=True):
folder_name, new_name = row[:2]
name_mapping[folder_name] = new_name
# 遍历总地址下的所有文件夹
for folder_name in os.listdir(base_dir):
folder_path = os.path.join(base_dir, folder_name)
# 检查当前路径是否为文件夹
if os.path.isdir(folder_path):
# 查找文件夹名称在Excel表格中的对应项
if folder_name in name_mapping:
new_name_base = name_mapping[folder_name]
count = 1
# 重命名文件夹内的所有图片
for filename in os.listdir(folder_path):
old_file_path = os.path.join(folder_path, filename)
if os.path.isfile(old_file_path) and any(
filename.lower().endswith(ext) for ext in ['.png', '.jpg', '.jpeg', '.gif']):
# 保持文件原始扩展名
file_extension = os.path.splitext(filename)[1]
new_file_name = f"{new_name_base}({count}){file_extension}"
new_file_path = os.path.join(folder_path, new_file_name)
try:
os.rename(old_file_path, new_file_path)
count += 1
except OSError as e:
print(f"错误:无法重命名文件 {old_file_path} - {e}")
else:
# 如果文件夹名称在Excel表格中没有找到,添加"(未命名)"标记
try:
os.rename(folder_path, folder_path + "(未命名)")
except OSError as e:
print(f"错误:无法重命名文件夹 {folder_path} - {e}")
# 用户输入
base_dir = input("请输入总地址: ")
excel_path = input("请输入Excel表格地址: ")
rename_images(base_dir, excel_path)