matchold_newjpg.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import os
  2. import shutil
  3. def match_and_copy(folder_a, folder_b, output_folder):
  4. os.makedirs(output_folder, exist_ok=True)
  5. # 获取文件名(去掉后缀)
  6. json_names_a = {os.path.splitext(f)[0] for f in os.listdir(folder_a) if f.lower().endswith('.json')}
  7. jpg_names_b = {os.path.splitext(f)[0] for f in os.listdir(folder_b) if f.lower().endswith('.jpg')}
  8. # 找出匹配上的名字
  9. common_names = json_names_a.intersection(jpg_names_b)
  10. # 找出未匹配上的名字(json 有,jpg 没有)
  11. unmatched_names = json_names_a - jpg_names_b
  12. for name in common_names:
  13. jpg_src_path = os.path.join(folder_b, name + '.jpg') # jpg 来自 B
  14. json_src_path = os.path.join(folder_a, name + '.json') # json 来自 A
  15. jpg_dst_path = os.path.join(output_folder, name + '.jpg')
  16. json_dst_path = os.path.join(output_folder, name + '.json')
  17. # 复制文件
  18. shutil.copy2(jpg_src_path, jpg_dst_path)
  19. shutil.copy2(json_src_path, json_dst_path)
  20. print(f'完成匹配,复制了 {len(common_names)} 对文件到 {output_folder}')
  21. if unmatched_names:
  22. print("\n以下文件在文件夹A中存在 json,但文件夹B中没有对应 jpg:")
  23. for name in sorted(unmatched_names):
  24. print(f"- {name}.json")
  25. else:
  26. print("\n所有 json 文件都成功匹配到了 jpg 文件。")
  27. if __name__ == "__main__":
  28. folder_a = r"\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\513-515数据汇总\0516修订彩色钢板" # 含json和jpg
  29. folder_b = r"\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\513-515数据汇总\pcd2color_result\color_jpg" # 只有jpg
  30. output_folder = r"\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\513-515数据汇总\0525保存xyz信息的jpg+0516修订后的json"
  31. match_and_copy(folder_a, folder_b, output_folder)