对比两个文件夹中的文件名,以确保它们的同等性,并删除那些不匹配的文件 ...

打印 上一主题 下一主题

主题 561|帖子 561|积分 1683

确保两个文件夹中的文件名同等,如果发现某个文件夹中的文件在另一个文件夹中没有对应的文件,则将这些文件删除,以便文件夹中的文件保持同等性。
  1. import os
  2. import xml.etree.ElementTree as ET
  3. def get_image_prefix(file_path):
  4.     tree = ET.parse(file_path)
  5.     root = tree.getroot()
  6.     return root.find('filename').text.split('.')[0]
  7. def compare_and_delete(folder1, folder2):
  8.     # image_files1 = [f for f in os.listdir(folder1) if f.endswith(".xml")]
  9.     image_files1 = [f for f in os.listdir(folder1) if f.endswith(".txt")]
  10.     image_files2 = [f for f in os.listdir(folder2) if f.endswith('.jpg') or f.endswith('.png') or f.endswith('.jpeg') or f.endswith('.PNG') or f.endswith('.JPG') or f.endswith('.JPEG')  ]
  11.     for file1 in image_files1:
  12.         prefix1 = os.path.splitext(file1)[0]
  13.         found = False
  14.         for file2 in image_files2:
  15.             prefix2 =  os.path.splitext(file2)[0]
  16.             if prefix1 == prefix2:
  17.                 found = True
  18.                 break
  19.         if not found:
  20.             print(f"不同的前缀: {prefix1}",file1)
  21.             os.remove(os.path.join(folder1, file1))
  22.     for file2 in image_files2:
  23.         prefix2 = os.path.splitext(file2)[0]
  24.         found = False
  25.         for file1 in image_files1:
  26.             prefix1 = os.path.splitext(file1)[0]
  27.             if prefix1 == prefix2:
  28.                 found = True
  29.                 break
  30.         if not found:
  31.             print(f"不同的前缀: {prefix2}",file2)
  32.             os.remove(os.path.join(folder2, file2))
  33. #文件夹
  34. folder1 = r"C:\Users\VOCdevkit\txt"
  35. folder2 = r"C:\Users\VOCdevkit\JPEGImages"
  36. compare_and_delete(folder1, folder2)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

吴旭华

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表