1.图片名只保留中文
import os import re import unicodedata def is_chinese(char): """判断一个字符是否是中文。""" return unicodedata.category(char).startswith('Lo') def retain_chinese(filename): """保留文件名中的中文字符。""" return ''.join(char for char in filename if is_chinese(char)) def rename_files_in_directory(directory): """重命名指定目录中的所有图片,只保留中文字符,并保持原扩展名。""" for filename in os.listdir(directory): # 确保文件是图片 if not filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')): continue # 提取原始扩展名 original_extension = os.path.splitext(filename)[-1] # 新文件名只包含中文字符,且保持原扩展名 new_name = retain_chinese(filename) + original_extension # 如果文件名未改变,则跳过 if new_name == filename: continue # 如果文件名已存在,则添加后缀 new_path = os.path.join(directory, new_name) counter = 1 while os.path.exists(new_path): base = retain_chinese(filename) new_path = os.path.join(directory, f"{base}({counter}){original_extension}") counter += 1 # 重命名文件 os.rename(os.path.join(directory, filename), new_path) print(f"Renamed {filename} to {new_path}") def main(): directory = input("请输入目录地址: ") if os.path.isdir(directory): rename_files_in_directory(directory) else: print("提供的地址不是一个有效的目录。") if __name__ == "__main__": main()
2.建立统计excel
import os from openpyxl import Workbook def list_image_filenames(directory): # 支持的图片文件扩展名列表 img_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp'] # 遍历目录,列出所有图片文件名(不含后缀) return [os.path.splitext(file)[0] for file in os.listdir(directory) if os.path.splitext(file)[1].lower() in img_extensions] def write_to_excel(filenames, save_path): # 创建一个Excel工作簿 workbook = Workbook() sheet = workbook.active # 在第一行添加标题 sheet.cell(row=1, column=1).value = "旧数据" sheet.cell(row=1, column=2).value = "新数据" # 从第二行开始,将文件名写入第一列 for index, name in enumerate(filenames, 2): # 从第二行开始 sheet.cell(row=index, column=1).value = name # 保存Excel文件 workbook.save(save_path) def main(): # 从用户获取目录路径 dir_path = input("请输入文件夹目录路径: ") # 检查路径是否存在 if not os.path.exists(dir_path): print("指定的路径不存在,请检查后重试。") return # 获取图片文件名列表 filenames = list_image_filenames(dir_path) # 设置Excel文件保存路径 excel_path = os.path.join(dir_path, "统计文件名.xlsx") # 写入Excel并保存 write_to_excel(filenames, excel_path) print(f"文件名已成功写入 {excel_path}") if __name__ == "__main__": main()
3.chatgpt翻译
4.点对点修改:
import os import pandas as pd def unique_filename(path, name, extension): """生成唯一的文件名,避免重命名时覆盖现有文件。""" counter = 1 new_name = name while os.path.exists(os.path.join(path, new_name + extension)): new_name = f"{name}({counter})" counter += 1 return new_name def main(): # 请求用户输入文件夹路径和Excel文件名 folder_path = input("请输入文件夹路径: ") excel_file = input("请输入Excel文件名(包括.xlsx扩展名): ") # 尝试读取Excel文件 try: df = pd.read_excel(os.path.join(folder_path, excel_file)) print("列名:", df.columns) # 确认列名存在 if '旧名称' not in df.columns or '新名称' not in df.columns: print("错误:找不到'旧名称'或'新名称'列。请检查Excel文件的列标题。") return except Exception as e: print(f"读取Excel文件时出错: {e}") return # 支持的图片格式 image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp'] # 遍历目录中的文件 for file in os.listdir(folder_path): file_path = os.path.join(folder_path, file) if os.path.isfile(file_path) and any(file.endswith(ext) for ext in image_extensions): name, extension = os.path.splitext(file) # 在Excel中查找匹配的旧名称 new_name = df.loc[df['旧名称'] == name, '新名称'].values if new_name.size > 0: new_name = unique_filename(folder_path, new_name[0], extension) new_file_path = os.path.join(folder_path, new_name + extension) os.rename(file_path, new_file_path) print(f"重命名:'{file}' -> '{new_name + extension}'") print("重命名过程完成。") if __name__ == "__main__": main()
标签:__,file,中文翻译,name,英文,new,path,os,图片 From: https://www.cnblogs.com/zly324/p/17920217.html