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)