You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅复制非重复文件并保留文件夹结构?

问题:保留目录结构复制唯一图片文件到目标文件夹

我需要在两个文件夹中找出重复文件,仅将唯一的图片文件复制到dest文件夹。使用以下代码可复制所有非重复文件,但无法保留源目录结构。我知道os.walk会返回3个元组,但不清楚如何重建子目录。

示例代码:

import shutil, os
from difPy import dif
source = input('Input source folder:')
dest = input('Input backup \ destination folder:')

ext = ('.jpg','.jpeg','.gif','.JPG','.JPEG','.GIF')

search = dif(source, dest)
result = search.result
result


dupes = []
srcfiles = []
filecount = []
failed = []
removed = []

for i in result.values(): 
        dupes.append(i['location'])

for dirpath, subdirs, files in os.walk(source):
    for x in files:
        if x.endswith(ext):
            srcfiles.append(os.path.join(dirpath, x))

for f in srcfiles:
                if f not in dupes:
                        shutil.copy(f, dest)
                        print('File copied successfully - '+f)
                        filecount.append(f)
                else:
                        print('File not copied successfully !!!! - '+f)
                        failed.append(f)

我还尝试过结合忽略列表使用shutil.copytree函数,但该函数要求目标为新文件夹,且忽略列表功能无法正常工作。

shutil.copytree示例代码:

for i in result.values(): 
        df = []
        df.append(i['filename'])

def ignorelist(source, df):
        return [f for f in df if os.path.isfile(os.path.join(source, f))]

shutil.copytree(source, destnew, ignore=ignorelist)

内容的提问来源于stack exchange,提问作者W4K1NG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 03:40:38