python把两个文件夹里面的所有文件名分别sort排序后写到两个txt里面
原博客迁移到:https://blog.csdn.net/u013171226/article/details/107680311
有一次利用下面的脚本保证xml和jpg图片一一对应,运行了下面的脚本之后发现xml和jpg的数量还是不对,于是利用上面的脚本吧所有的文件名字都写下来,然后发现是图片数据里面存在一些同样名字的图片,只不过一个的后缀是.jpg,另一个的后缀是.png或者.PNG或者.BMP
""" 由于标注时有些错误,导致图片有几张多余的或者txt文件有几张多余的, 因此要删除多余的文件,保证每一张jpg对应一个txt文件。 """ import os images_dir = "./JPEGImages" labels_dir = "./labels" #删除多余的image, labels = [] for label in os.listdir(labels_dir): #labels.append(label.split('.')[0])#不能用这一行,因为有些文件名字前面就有 . 这样得到的文件名字是不对的。 labels.append(os.path.splitext(label)[0]) #print(labels) for image_name in os.listdir(images_dir): #image_name = image_name.split('.')[0] #不能用这一行,因为有些文件名字前面就有 . image_name = os.path.splitext(image_name)[0] #print(image_name) if image_name not in labels: image_name = image_name + ".jpg" print(image_name) #os.remove(os.path.join(images_dir, image_name))#删除图片,最开始先把这一行注释掉,运行下看看打印,以免误删导致数据还是重新做, #删除多余的label images = [] for image in os.listdir(images_dir): #images.append(image.split('.')[0])#不能用这一行,因为有些文件名字前面就有 . images.append(os.path.splitext(image)[0] ) for label_name in os.listdir(labels_dir): #label_name = label_name.split('.')[0]#不能用这一行,因为有些文件名字前面就有 . label_name = os.path.splitext(label_name)[0] if label_name not in images: label_name = label_name + ".txt" print(label_name) #os.remove(os.path.join(labels_dir, label_name))#删除label,最开始先把这一行注释掉,运行下看看打印,以免误删导致数据还是重新做,
作者:cumtchw
出处:http://www.cnblogs.com/cumtchw/
我的博客就是我的学习笔记,学习过程中看到好的博客也会转载过来,若有侵权,与我联系,我会及时删除。