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

标签 python python-3.x file renaming python-os

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

文件夹:A123正面 A123 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 是产品代码,因此我想要带有图像数量的产品代码,并且该产品代码附加下划线。

这些以千为单位,在子目录中,为了方便起见,我对其进行了简化。

我编写了以下代码,用于进入目录和子目录。

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))

关于python - 重命名不同文件夹中同名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51445282/

相关文章:

python - 如何使用 StreamHandler 捕获记录器 stderr 上的输出?

python - 使用字典理解的语法无效

python - 如何在存在生成器/协程的情况下检查程序状态?

c# - File.Replace 抛出 IOException

javascript - 使用 Kartik 文件输入上传图像

c# - 管理绝对路径和完整路径

python - CNTK - 权重更新占缓慢训练时间的 90%

python - 如何在 Linux 上安装 tensorflow

python - 打乱单词的字符,同时保持句子结构和标点符号

python-3.x - Docker-Compose 构建失败 [Permission Denied] with postgresql 除非它使用缓存的 Dockerfile