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,最开始先把这一行注释掉,运行下看看打印,以免误删导致数据还是重新做,

 

posted @ 2020-05-29 14:33  cumtchw  阅读(419)  评论(0编辑  收藏  举报