python删除txt中不存在的路径

这段时间将caltech数据集转换成voc格式的的时候,发现存在一丢丢问题,就是将Annotations文件夹里面的xml转换为txt后,训练的时候才发现被标注的几张图片不存在数据集中,图片太多,一张纸检查不好操作,所以就写了个简单的py文件来检查一下txt文件中哪些路径不存在,然后重新生产一个txt文件(里面存储的是图片路径和bbox的信息)即可

下图是txt文件存储的内容,包括图片路径和bbox的信息

所以我们看到,路径和bbox之间有一个空格,所以给我们创造了一个利用slpit()方法的机会

code:

# 分别检查三个txt文件:2007_train.txt,2007_test.txt,2007_val,txt
sets=[('2007', 'train'), ('2007', 'val'), ('2007', 'test')]
import os
def convert_annotation(year, file_id):
    # 打开相应的txt文件
    with open("./{}_{}.txt".format(year,file_id)) as f:
        # 对整个文件进行读取,将每一行作为一个元素以列表的格式返回
        all = f.readlines()
        # for循环历遍每一个元素
        for i in all:
            # split()方法里面不填写表示按空格切割,返回一个列表
            a = i.split()
            # 获取第一个元素,也就是获取对应的路径
            path_test = a[0]
            # os.path.exist(path)判断路径是否存在,存在返回True,否则返回False
            if os.path.exists(path_test):
                # 如果路径存在则以写入的形式打开一个txt文件
                with open("./{}_{}_update.txt".format(year,file_id),"a") as f:
                    # 重新写入当前元素
                    f.write(i)
                    f.close()
            f.close()

# 历遍2007_train.txt,2007_test.txt,2007_val,txt
for year, file_id in sets:
    convert_annotation(year,file_id)
The end.


猜你喜欢

转载自blog.csdn.net/li_haiyu/article/details/80884158