python 兩個資料夾裡的檔名對比

inspur禿頭哥發表於2020-10-14

你是否遇到過標註完圖片資料後發現xml檔案比jpg檔案要少幾個,但是成千上萬張圖片你有不知道是少了哪個,下面簡單的程式碼可以很好地解決你的問題:

基本思路就是把兩個資料夾下的檔名分別放到列表中,對比兩個列表不同的地方即可。

# -*- coding: utf-8 -*-
import os


path1 = r'./train'
path2 = r'./train_xml'

def file_name(image_dir,xml_dir):
    jpg_list = []
    xml_list = []
    for root, dirs, files in os.walk(image_dir):
        for file in files:
            jpg_list.append(os.path.splitext(file)[0])
    for root, dirs, files in os.walk(xml_dir):
        for file in files:
            xml_list.append(os.path.splitext(file)[0])
    print(len(jpg_list))
    diff = set(xml_list).difference(set(jpg_list))  # 差集,在a中但不在b中的元素
    for name in diff:
        print("no jpg", name + ".xml")
    diff2 = set(jpg_list).difference(set(xml_list))  # 差集,在b中但不在a中的元素
    print(len(diff2))
    for name in diff2:
        print("no xml", name + ".jpg")
if __name__ == '__main__':

    file_name(path1,path2)

相關文章