一、需求:
1、根据一个文件夹的所有文件夹名称,批量创建另一个文件夹,并重命名新的文件夹
2、根据提供的数据,获取图片名称,并修改为新的文件名称,保存到json文件中
3、根据提供的图片,复制图片到指定文件夹,并重命名图片
二、代码:
import os# 根据一个文件夹的所有文件夹名称,批量创建另一个文件夹,并重命名新的文件夹path = r"D:\Desktop\file"
new_path = r"D:\Desktop\file_ret"def get_file_names(directory):filenames = []for item in os.listdir(directory):if os.path.isfile(os.path.join(directory, item)):# 不带后缀名base_name, extension = os.path.splitext(item)filenames.append(base_name)return filenames# 使用方法:
current_dir_files = get_file_names(path)# 检查新文件夹是否已存在,如果没有则创建
if not os.path.exists(new_path):os.makedirs(new_path)# 批量创建文件夹
for d in current_dir_files:# 新文件夹的名称后缀+“_ret”完整路径new_folder_path = os.path.join(new_path, d + "_ret")# 检查新文件夹是否已存在,如果没有则创建if not os.path.exists(new_folder_path):os.makedirs(new_folder_path)
# 根据提供的数据,获取图片名称,并修改为新的文件名称,保存到json文件中import pandas as pd
import jsonret = []# 导入excel文件
xls = pd.ExcelFile(r'D:\Desktop\xinxi.xlsx')# 读取所有sheet的数据并存储为字典,键为sheet名称,值为DataFrame
sheet_dfs = {sheet_name: xls.parse(sheet_name) for sheet_name in xls.sheet_names}# 现在sheet_dfs中包含了各个sheet的数据
for sheet_name, df in sheet_dfs.items():print(f"Sheet Name: {sheet_name}")for i in list(df._values)[1:]:ret_dict = {}if i[3].isdigit():image_name = i[3] + i[9] + "_ret.jpg"ret_dict[image_name] = i[3]ret.append(ret_dict)print(image_name)if ret:print(len(ret))# 指定文件路径与编码方式(UTF-8)file_path = "info.json"# 写入文件时确保打开文件时指定正确的编码with open(file_path, 'w', encoding='utf-8') as f:# ensure_ascii=False 防止中文字符被转义为Unicode编码json.dump(ret, f, ensure_ascii=False)
# 根据提供的图片,复制图片到指定文件夹,并重命名图片import json
import os
import shutil# 指定包含中文的JSON文件路径
file_path = "info.json"# 读取文件时同样需要指定正确的编码
with open(file_path, 'r', encoding='utf-8') as f:data = json.load(f)# 获取包含图片的所有文件夹
path = r"D:\Desktop\file"def get_file_names(directory):filenames = []for item in os.listdir(directory):if os.path.isfile(os.path.join(directory, item)):# 不带后缀名base_name, extension = os.path.splitext(item)filenames.append(base_name)return filenames# 使用方法:
current_dir_files = get_file_names(path)# 复制图片ret_err = []for s in str_list:# 路径需要修改image_file_path = os.path.join(r"D:\Desktop\tu", s)new_image_file_path = os.path.join(r"D:\Desktop\tu_ret", s + "_ret")# 或者为了更好的可读性,我们可以分开写image_names = []for root, dirs, files in os.walk(image_file_path):for file in files:if os.path.isfile(os.path.join(root, file)): # 添加条件判断,只处理文件image_name = os.path.splitext(file)[0]image_names.append(image_name)ret = []for i in data:# print(list(i.values())[0])if list(i.values())[0] in image_names:print(list(i.values())[0])ret.append(list(i.keys())[0])file_path = image_file_path + "\\" + list(i.values())[0] + ".jpg"# 新的文件名(包括扩展名)new_filename = list(i.keys())[0]# 获取原始图片的完整新路径(包括目标文件夹和新的文件名)new_image_path = os.path.join(new_image_file_path, new_filename)try:# 移动并重命名图片shutil.copy2(file_path, new_image_path)except:ret_err.append(i)print(len(ret))if ret_err:# 指定文件路径与编码方式(UTF-8)file_path = "err.json"# 写入文件时确保打开文件时指定正确的编码with open(file_path, 'w', encoding='utf-8') as f:# ensure_ascii=False 防止中文字符被转义为Unicode编码json.dump(ret_err, f, ensure_ascii=False)