实现批量读取txt文件数据并写入csv文件

描述:用yolo模型测试字符图片后将类别结果以txt文件形式保存,需要将文件的文件名和类别结果分别以如下形式保存到一个csv文件中,其中类别结果是txt文件第一列的数字,在提取前需要先根据第二列先验框的位置将数字按图片中的数字顺序排序。

实现批量读取txt文件数据并写入csv文件_第1张图片实现批量读取txt文件数据并写入csv文件_第2张图片

import os
import codecs
import csv
import numpy as np
from functools import reduce
from operator import itemgetter

filePath = 'D:\\yolo\\yolov5-5.0\\runs\\detect\\exp10\\labels'  #获取测试结果所在文件夹的绝对路径
list0=os.listdir(filePath)               #
list2=[]                                #存放每个txt文件中的类别结果
for files in list0:

    f = codecs.open('D:\\yolo\\yolov5-5.0\\runs\\detect\\exp10\\labels\\'+files, mode='r', encoding='utf-8')
    
    line = f.readline()
    list1=[]                                       #存放txt文件中第一列的数字
    list4=[]                                       #存放txt文件中的第二列的数字
    while line:
        a=line.split()                                  #a是列表类型
        b=a[0:1]                                      #获取txt文件中每一行第一列的数字类别
        c=a[1:2]                                       #获取txt文件每一行第二列的文件
        list1.append(b[0])
        list4.append(c[0])
        line=f.readline()
    f.close
    dictname=dict(zip(list1,list4))                   #将两个列表分别一个作为字典的键,一个作为字典的值
    listnum=sorted(dictname.items(),key=lambda x:x[1])  #将字典中的键值对按照值的顺序排序,返回类型是一个列表
    listnum1=list(map(itemgetter(0), listnum))              #提取列表中二元元组的第一个元素
    s="".join(listnum1)                    #将列表中的元素合并
    list2.append(s)

list3=zip(list0,list2)
d=list(list3)
x=np.array(d)

with open("D:/csv/test5.csv", "a", newline='', encoding='GBK') as f:
    writer = csv.writer(f, delimiter=',')
    for i in x:
        writer.writerow(i)

你可能感兴趣的:(python,深度学习,脚本语言)