使用python对比两个目录下的文件名差异

前言

在做深度学习图像识别相关的项目,经常会使用到标注工具对图像进行标注,然后会在对应文件夹下生成文件名相同的标签文件,比如000023.jpg,标注后会生成000023.xml,或都000023.txt文件,但有时候会漏标或者样本不对时暂时不标注的,那在要训练时一个个文件去对比两个目录下的文件名,当文件有上万的情况下,人工对比是不现实的。

代码

下面的python是做两个目录交差对比,分别输出各两个不同的结果,如果想删除没有对应图像,把注释打开就可以了。用是python版本是2.7.

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


root_path = r'/home/linux/caffe/caffe_ssd/data/VOCdevkit/VOC2007/'

def contrastDir(file_dir):
    jpg_list = []
    xml_list = []
    for root, dirs, files in os.walk(file_dir+'JPEGImages'):
        for file in files:
            if os.path.splitext(file)[1] == '.jpg':
                jpg_list.append(os.path.splitext(file)[0])
    for root, dirs, files in os.walk(file_dir+'Annotations'):
        for file in files:
            if os.path.splitext(file)[1] == '.xml':
                xml_list.append(os.path.splitext(file)[0])
#对比xml与jpg
    diff = set(xml_list).difference(set(jpg_list))  
    print(len(diff))
    for name in diff:
        print("No corresponding image file", name + ".xml")
# 对比jpg与xml
    diff2 = set(jpg_list).difference(set(xml_list))  
    print(len(diff2))
    for name in diff2:
        print("No corresponding XML file", name + ".jpg")
#删除没有的对应xml的图像       
#        os.remove(file_dir+'JPEGImages/'+ name+'.jpg')
    return jpg_list,xml_list

if __name__ == '__main__':

    contrastDir(root_path)
发布了79 篇原创文章 · 获赞 45 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/matt45m/article/details/96295248
今日推荐