试了好多进行图片批量重命名的方法,发现都是按照图片的时间先进行排序,然后对排序后的图片进行重新命名,但是我需要的是,按照我图片名称的顺序进行批量命名,终于在我不懈的努力下写出了合适的代码
import os import re def natural_sort_key(s): """ 自然排序的键函数,用于对文件名中的数字部分进行排序 """ return [int(text) if text.isdigit() else text.lower() for text in re.split(r'(\d+)', s)] def rename_images(folder_path): # 获取目标文件夹下的所有图片文件 image_files = [f for f in os.listdir(folder_path) if f.endswith('.png') or f.endswith('.jpg')] # 按照图片名称自然排序 image_files.sort(key=natural_sort_key) # 重新命名图片文件 for i, filename in enumerate(image_files): old_path = os.path.join(folder_path, filename) new_filename = f"{i + 1}.png" # 或者使用 '.jpg',根据实际情况 new_path = os.path.join(folder_path, new_filename) os.rename(old_path, new_path) print(f"将 {filename} 重命名为 {new_filename}") # 指定图片文件夹路径 folder_path = r'E:\xiangmu\雨图\rain_data_train_Light\rain' # 调用函数进行重新命名 rename_images(folder_path)
代码如下所示,将folder_path换成你自己需要排序的文件夹即可,这个要求你原本图片的名字是数字的