首页 > 其他分享 >(打标批量重命名)表格第一列是文件夹名,第二列是文件夹内的图片名

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

时间:2024-01-31 19:45:01浏览次数:31  
标签:name os 第二列 文件夹 file path folder base 打标

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)

 

标签:name,os,第二列,文件夹,file,path,folder,base,打标
From: https://www.cnblogs.com/zly324/p/17999958

相关文章

  • (MJ出图转大模型)删除二级文件夹
    importosimportshutildefdelete_subfolders(directory):#检查目录是否存在ifnotos.path.exists(directory):print("指定的目录不存在:",directory)return#遍历目录中的所有项foriteminos.listdir(directory):item......
  • nodejs下载URL地址的文件后保存以及删除指定文件夹的操作
    这里下载文件用了axios去下载下载:publicasyncdownload_from(url,fileName){returnnewPromise(async(resolve,reject)=>{constdownload_dir=path.join(process.cwd(),AppConfig.config.download_file_path,this._job_id......
  • git空文件夹问题
    git在使用gitstatus时是不会显示空文件的,同时它也不能被放入暂存区 当我向空文件(first)加入文件时此时才可以将first放入暂存区......
  • 在Rapsberry Pi OS上设置文件夹被多用户共享
    先设置umask为0002全部用户都设置为0002:vi/etc/profile.d/set-umask-for-all-users.sh输入002 如果只是单一用户,vi ~/.bashrc添加:umask002详细介绍看这里:https://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html 一定要设置成002,这一步......
  • Unity的StreamAssets文件夹
    StreamAssets是一个特殊的文件夹,其中的内容在Unity打包的时候并不会被压缩,完整的带入包体介绍在做一个根据可变配置进行操作的功能时,突然发现在windows中正常的功能在mac上失效了,而且还是部分mac失效。发现StreamAssets在mac某个版本以上就不支持写操作了,搜了一下网上的资料......
  • Git如何提交空的文件夹
    Git如何提交空的文件夹实测在仓库中,如果一个文件夹为空,即内部无文件,则无法正常被gitadd,而是被忽略。为了正常添加这类空的文件夹,需要:在空文件夹下新建文件.gitkeep,这样Git便会添加它。有个简单的脚本,可以批量添加空文件夹:#!/bin/bashmain(){fordin`find.-typed......
  • 使用WinRAR一次压缩多个文件夹到各自的rar文件
    使用WinRAR一次压缩多个文件夹到各自的rar文件选择所有需要压缩的文件夹右键选择添加到压缩文件选择你的压缩格式(.rar或.zip)文件把每个文件放到单独的压缩文件中(勾上)确定,即可压缩文件的双重扩展名,效果就是a.txt,压缩之后为a.txt.rar子文件夹里的压缩文件,效果就是a文......
  • 切分数据集到train-val-test文件夹
    importosimportrandomimportshutildefsplit_data(source_dir,train_dir,val_dir,test_dir):#确保目标文件夹存在os.makedirs(train_dir,exist_ok=True)os.makedirs(val_dir,exist_ok=True)os.makedirs(test_dir,exist_ok=Tru......
  • 用python提取excel表格第一列汉字首字母到第二列
    今天有个任务就是需要提取excel表格里面的汉字首字母,然后我就手动写了三个小时,结果还剩3000多行,这样下去不行啊想了下用python能不能做到呢?importopenpyxlfrompypinyinimportlazy_pinyin,Style#加载工作簿workbook=openpyxl.load_workbook('hanzi.xlsx')#选择......
  • 修改文件夹下文件的时间戳
     可以使用 touch 命令的-t选项来设置特定的时间戳。以下是更新时间戳为2022年11月11日11点11分的脚本示例:#!/bin/bash#进入包含文件的目录cd/你的目录路径#更新所有文件和文件夹的时间戳find.-exectouch-t202211111111{}\;命令解析:find. :表示在当前目录......