如下图所示,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是空格,所以重新赋值
最终结果: