(打标批量重命名)表格第一列是文件夹名,第二列是文件夹内的图片名

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)

 

posted @ 2024-01-31 19:37  不上火星不改名  阅读(47)  评论(0)    收藏  举报