在移动路径后,可以使用break语句跳出当前循环,以避免出现找不到原来路径的情况。以下是修改后的代码:

import os
import filecmp
import hashlib
import shutil

def compare_images(folder1, folder2):
    # 获取两个文件夹中的所有图片文件
    images1 = [f for f in os.listdir(folder1) if os.path.isfile(os.path.join(folder1, f))]
    images2 = [f for f in os.listdir(folder2) if os.path.isfile(os.path.join(folder2, f))]

    # 遍历第一个文件夹中的图片
    for image1 in images1:
        path1 = os.path.join(folder1, image1)

        # 遍历第二个文件夹中的图片
        for image2 in images2:
            path2 = os.path.join(folder2, image2)

            # 比较两张图片文件是否相同
            if filecmp.cmp(path1, path2, shallow=False):
                # 获取原文件夹名字
                folder_name = os.path.basename(folder1)

                # 修改文件路径为G:\unuse,并重命名加上原文件夹名字
                new_path = os.path.join("G:\\unuse", folder_name + "_" + image2)
                shutil.move(path2, new_path)
                print(f"Moved and renamed: {path2} -> {new_path}")
                break


# 比较两个文件夹中的图片
folder1 = r"G:\清洗完成\上海新天地"
folder2 = r"G:\清洗完成\上海石库门"
compare_images(folder1, folder2)
``
import osimport filecmpimport hashlibimport shutildef compare_imagesfolder1 folder2 # 获取两个文件夹中的所有图片文件 images1 = f for f in oslistdirfolder1 if ospathisfileospathjoinfolder1 f images2 = f for

原文地址: http://www.cveoy.top/t/topic/ibDR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录