使用python找出2个文件夹中相同文件名的文件

前言

碰到一个需求,对于同一批数据s,在A文件夹中有a的标签,在B文件中有b的标签。但是a标签和b标签的个数不一样,需要在不同的文件夹中把大家都有标签的文件找出来。用于后期合并标签。

代码

# 把标注的数据中
# 同时标注了肺动脉和主动脉的数据找出,移动到labels/fdm中,labels/zdm中
# 并将对应的图像文件移动到images中

import os
from glob import glob
import shutil

def get_nii_names(work_dir)->list:
    """
    计算每个文件夹中nii的文件名,返回他们的列表
    :param work_dir: nii所在的文件夹
    :return: 文件名的列表,如[xxx.nii.gz,...]
    """
    niis_path = glob(work_dir + "*.nii.gz")
    nii_names = []
    for nii_path in niis_path:
        _, nii_name = os.path.split(nii_path)
        # print(fdm_label_name)
        nii_names.append(nii_name)

    return nii_names

if __name__ == '__main__':
    all_images_dir = r"I:\zdm_label"
    fdm_label_dir = r"I:\fdm_label\label2/"
    zdm_label_dir = r"I:\zdm_label\label2/"

    fdm_label_names = get_nii_names(fdm_label_dir)
    zdm_label_names = get_nii_names(zdm_label_dir)

    print(len(fdm_label_names),len(zdm_label_names))
    # 求交集
    common_names = list(set(fdm_label_names)&set(zdm_label_names))
    common_names.sort(key=lambda x:int(x[:-7]))
    print(len(common_names))

    images_dir = "custom_images"
    labels_fdm_dir = "custom_labels/fdm"
    labels_zdm_dir = "custom_labels/zdm"
    if not os.path.exists(images_dir):
        os.mkdir(images_dir)
    if not os.path.exists(labels_fdm_dir):
        os.makedirs(labels_fdm_dir)
    if not os.path.exists(labels_zdm_dir):
        os.makedirs(labels_zdm_dir)

    for common_name in common_names:
        print(f'开始复制{
      
      common_name}')
        old_image_path = os.path.join(all_images_dir,common_name)
        new_image_path = os.path.join(images_dir,common_name)
        shutil.copy(old_image_path,new_image_path)

        old_fdm_label_path = os.path.join(fdm_label_dir,common_name)
        new_fdm_label_path = os.path.join(labels_fdm_dir,common_name)
        shutil.copy(old_fdm_label_path,new_fdm_label_path)

        old_zdm_label_path = os.path.join(zdm_label_dir, common_name)
        new_zdm_label_path = os.path.join(labels_zdm_dir, common_name)
        shutil.copy(old_zdm_label_path, new_zdm_label_path)
        

猜你喜欢

转载自blog.csdn.net/sdhdsf132452/article/details/129731798