重命名不同文件夹中的同名文件

rename the files with same names in different folders

我想将不同文件夹中的所有图像复制到一个文件夹中。但我面临的问题是不同文件夹中的文件具有相同的名称,例如

文件夹:A123 FrontA123 Black.jpg , A123 Pink.jpg , A123 Red.jpg

文件夹:A123 返回 A123 Black.jpg , A123 Pink.jpg , A123 Red.jpg

我想要实现的是将所有文件放在一个文件夹中并命名为,

A123_1.jpg ,A123_2.jpg , A123_3.jpg , A123_4.jpg , A123_5.jpg , A123_6.jpg

注意,A123 是产品代码,所以我想要带有图像数量的产品代码,该产品代码后跟下划线。

这些在 1000s 和 sub 子目录中,为了方便我已经简化了它。

我写了下面的代码,进入目录和子目录。

import os
def replace(folder_path): 
    for path, subdirs, files in os.walk(folder_path):
       c=len(files)
       for name in files:
           if 'Thumb' in name:
               continue

            file_path = os.path.join(path,name)
            print(file_path)
            new_name = os.path.join(path,strname)
            os.rename(file_path,strname)
            c-=1


print('Starting . . . ')
replace('files/GILDAN')

但我不确定应该如何重命名。

要计算目标目录中现有文件的数量,您可以使用正则表达式或简单地使用列表理解,例如:

image_no = len([i for i in os.listdir(destination_path) if i.startswith(product_code)])

使用image_no在重命名命令中设置图像编号:

os.rename(file_path, product_code + '_' + str(image_no))