Lengxiy 发表于 2024-4-24 09:51

python匹配两个文件夹下的图片并选择性保存

我写的程序都是用于很鸡肋的工作场景
此次的工作场景是领导给了我一个工作让我批量替换下载的标准照片为高清的照片
我下载的标准照片目录为path_A
高清照片的目录为path_B
我将匹配后的文件根据path_A的文件格式放置于path_C



#path_A是原图片文件目录,path_A下面可以有多个文件夹内保存图片
#path_B是原图片文件目录,path_B下面没有子目录,内都是图片
#path_C是一个新建的父级目录,子目录会复制path_A内容

#目录填写完成后,path_A会与path_B目录内的所有图片进行匹配
#如果有相同的会将path_B内的图片复制一份放置与s内(放置位置与path_A位置相同)
#如果有不同的会将path_A内的图片复制一份放置与s内(放置位置与path_A位置相同)

import os
import shutil

# 设定文件夹A、B和C的路径
path_A = '教师1'# 请替换为文件夹A的实际路径
path_B = 'C:\\Users\\23728\\Documents\\WXWork\\1688854541319096\\Cache\\File\\2024-04\\原始照片(灰底)'# 请替换为文件夹B的实际路径
path_C = 's'# 请替换为文件夹C的实际路径

# 确保文件夹C存在
if not os.path.exists(path_C):
    os.makedirs(path_C)

# 遍历文件夹A
for root, dirs, files in os.walk(path_A):
    # 创建文件夹C中对应的子文件夹结构
    relative_path = os.path.relpath(root, path_A)
    target_path = os.path.join(path_C, relative_path)
    if not os.path.exists(target_path):
      os.makedirs(target_path)
   
    # 复制文件
    for file in files:
      # 获取文件名(无路径和扩展名)
      file_id = os.path.splitext(file)
      # 构建文件A和文件B的完整路径
      full_path_A = os.path.join(root, file)
      full_path_B = os.path.join(path_B, file)
      full_path_C = os.path.join(target_path, file)

      # 检查文件B是否存在
      if os.path.exists(full_path_B):
            # 文件B存在,复制文件B到文件夹C
            shutil.copy2(full_path_B, full_path_C)
      else:
            # 文件B不存在,复制文件A到文件夹C
            shutil.copy2(full_path_A, full_path_C)

print("文件复制完成。")

music984 发表于 2024-4-25 08:49

找出一样的文件,然后用批处理命令选择性移动文件就行。
https://zhidao.baidu.com/question/2122736153305509667.html

flylujun 发表于 2024-4-24 09:55

学习一下啊

greendays 发表于 2024-4-24 11:39

AB里的文件名一样那很好办

huangspider 发表于 2024-4-24 12:18

同意楼上,文件名一样好办多了

52soft 发表于 2024-4-24 16:58

对比的原理是什么?

Lengxiy 发表于 2024-4-25 08:45

52soft 发表于 2024-4-24 16:58
对比的原理是什么?

图片名字

Cleaf007 发表于 2024-4-25 14:09

我还以为有面部特征的算法或者对比清晰度的算法。只能说技术含量有待提高。

apetsun 发表于 2024-4-28 08:58

原理是啥?介绍一下。
页: [1]
查看完整版本: python匹配两个文件夹下的图片并选择性保存