python根据txt标签文档,划分数据集

如下图所示,txt文档里面放的是图片名称与标签(名称后面的数字即为标签),第三张图表示jpg文件下的图片。

第一步:标签里面有多少个类就需要创建相应多的文件夹

import os
path = 'file_create'   #设置创建后文件夹存放的位置,和本次程序文件同一目录下
for i in range(102):   #这里创建102个文件夹,有多少类,就修改为多少
   # *定义一个变量判断文件是否存在,path指代路径,str(i)指代文件夹的名字*
    isExists = os.path.exists(path+str(i))
    if not isExists:                  #判断如果文件不存在,则创建
        os.makedirs(str(i))
        print("%s 目录创建成功"%i)
    else:
        print("%s 目录已经存在"%i)
        continue         #如果文件不存在,则继续上述操作,直到循环结束

第二步:将每一类的文件放在同一个TXT里面

file = open('im_valid.txt','r')   #以验证集为例,打开

line = '1'   #给line赋个值,循环用
while line != '':     #读完就停止循环
    line = str(file.readline())     #将读出来的行,给line
    write = open(line[20:-1]+'.txt', 'a') #以追加的方式创建以数字为名的文本文件,20:-1是行中第20个字符到最后一个字符
    write.write(line[4:19]+'\n') #写入行,将行中的第4个字符到19个字符写进去
    write.close()  #关闭文件
    print(line)#[20:-1]) #观察程序运行用滴



file.close()  #关闭文件

第三步:最重要的一步,根据上一步的每一类的TXT文档,将对应图片放入对应的文件夹。

import os  # os是用来切换路径和创建文件夹的。
from shutil import copy  # shutil 是用来复制黏贴文件的


file_path = r'C:\Users\deep learning\.keras\file_create\jpg'  # 就是你图片的路径
line = '1'  #赋个初值

for i in range(102):    #有多少个类这数字就是多少
    file = open(str(i)+'.txt', 'r')   #打开每一类的TXT文件
    while line != '':      #读到最后一个再跳出去
        print(line)        #观察程序运行用的
        line = str(file.readline()).replace('\n','')    #读一行,用空格替代换行符
         
        from_path = os.path.join(file_path, line) #在文件夹里面找到对应图片
        to_path = 'C:\\Users\\deep learning\\.keras\\file_create'+'\\'+str(i) #放图片的文件夹
        print(from_path, to_path) #观察程序运行的
        try:     #因为有些类里面的图片没有,会报错,所以跳过这类错误
            copy(from_path, to_path) #将图片复制过去
        except:
            pass
    file.close() 关闭文件
    line = '1' #因为while循环完line是空格,所以重新赋值

最终结果:

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值