如何仅复制非重复文件并保留文件夹结构?
问题:保留目录结构复制唯一图片文件到目标文件夹
我需要在两个文件夹中找出重复文件,仅将唯一的图片文件复制到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
相关产品推荐
相关产品推荐

