使用OS模块成功重命名文件后出现FileExistsError

问题描述

因此,我试图在“ img”中每个文件夹中用其文件名中的"%"重命名所有文件。下面的代码有效。它查找名称中带有"%"文件,然后重命名它们。但是,重命名它们后,将显示FileExistsError

    import string,random,os
    
    length = 40
    combination = string.ascii_uppercase + string.ascii_lowercase + string.digits
    result_str = "".join(random.choice(combination) for i in range(length))
    
    for folder in os.listdir("./static/img/"):
        for folder_ in os.listdir(f"./static/img/{folder}"):
            for files_ in os.listdir(f"./static/img/{folder}/{folder_}"):
                if "%" in files_:
                    print(f"./static/img/{folder}/{folder_}/{files_}")
                    os.rename(f"./static/img/{folder}/{folder_}/{files_}",f"./static/img/{folder}/{folder_}/{result_str}.jpg")
                    print("Changed Filename")

我曾在重命名之前尝试过os.remove,就像在另一篇文章中所建议的那样,但是它甚至在重命名之前都会删除文件

解决方法

该随机字符串在循环之前生成一次,因此将其重命名为相同的名称,它应该位于循环内部,因此对于每次重命名都会有一个(可能)唯一的名称:

ModelViewSet