import os
import shutil


def match_and_copy(folder_a, folder_b, output_folder):
    os.makedirs(output_folder, exist_ok=True)

    # 获取文件名（去掉后缀）
    json_names_a = {os.path.splitext(f)[0] for f in os.listdir(folder_a) if f.lower().endswith('.json')}
    jpg_names_b = {os.path.splitext(f)[0] for f in os.listdir(folder_b) if f.lower().endswith('.jpg')}

    # 找出匹配上的名字
    common_names = json_names_a.intersection(jpg_names_b)

    # 找出未匹配上的名字（json 有，jpg 没有）
    unmatched_names = json_names_a - jpg_names_b

    for name in common_names:
        jpg_src_path = os.path.join(folder_b, name + '.jpg')  # jpg 来自 B
        json_src_path = os.path.join(folder_a, name + '.json')  # json 来自 A

        jpg_dst_path = os.path.join(output_folder, name + '.jpg')
        json_dst_path = os.path.join(output_folder, name + '.json')

        # 复制文件
        shutil.copy2(jpg_src_path, jpg_dst_path)
        shutil.copy2(json_src_path, json_dst_path)

    print(f'完成匹配，复制了 {len(common_names)} 对文件到 {output_folder}')

    if unmatched_names:
        print("\n以下文件在文件夹A中存在 json，但文件夹B中没有对应 jpg：")
        for name in sorted(unmatched_names):
            print(f"- {name}.json")
    else:
        print("\n所有 json 文件都成功匹配到了 jpg 文件。")


if __name__ == "__main__":
    folder_a = r"\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\513-515数据汇总\0516修订彩色钢板"  # 含json和jpg
    folder_b = r"\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\513-515数据汇总\pcd2color_result\color_jpg"  # 只有jpg
    output_folder = r"\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\513-515数据汇总\0525保存xyz信息的jpg+0516修订后的json"

    match_and_copy(folder_a, folder_b, output_folder)
