事情是这样的,有一个图片数据集需要根据分成很多类以便于给其设置标签,但所有的图片都在一个文件里,另外又给了个.txt文件,其中每行都是对应图片的类别。例如第1行对应的第0001.jpg是第14类(每个类都有多张图片),显而易见,.txt文件的行数和图片的总数是相等的。

以下为待分类的文件:

现在需要根据标签将同类的文件放入同一个文件夹中,如图为分类完成的结果,总览和第一类文件夹:

其中过滤了图片宽和高小于400的图片,如果不需要将if判断部分注释掉即可,代码如下,

import shutil
import cv2# 读入分类的标签txt文件
label_file = open("E:\\pythonProject\\data\\train_perfect_preds.txt", 'r')
# 原始文件的根目录
input_path = "E:\\pythonProject\\data\\cars_train"
# 保存文件的根目录
output_path = "E:\\pythonProject\\result"
# 标签数组
#lables = ["Classical", "Rock", "Symphony", "Country"]
paths = ['/fdfs_data/data/', '/fdfs_data/data1/']trainpath = '/home/*/*/SR/raisr/test'file_name = "E:\pythonProject\data\cars_train"
def get_img_file(file_name):imagelist = []for parent, dirnames, filenames in os.walk(file_name):for filename in filenames:if filename.lower().endswith(('.bmp', '.dib', '.png', '.jpg', '.jpeg', '.pbm', '.pgm', '.ppm', '.tif', '.tiff')):imagelist.append(os.path.join(parent, filename))return imagelistlist = get_img_file(file_name)  #图片的路径数组
#print(list)
# 一行行读入标签文件
data = label_file.readlines()
#data1 = pic_file.readlines()
# 计数用
i = 0for line in data:# 通过空格拆分成数组str1 = line.split(" ")# 第一个是文件名#file_name = str1[0]# 第二个是标签类别,并去除最后的换行字符#file_label = str1[1].strip()file_label = str1[0].strip()# 原始文件的路径str2=file_label.zfill(5)#old_file_path = os.path.join(input_path, str2)old_file_path = list[i]# 新文件路径new_file_path = ""# 如果文件名中有test字符,将其保存至test文件夹下的对应标签文件夹中#if "test" in file_name:new_file_path = os.path.join(output_path, "data6", file_label)# 如果文件名中有 train 字符,将其保存至train文件夹下的对应标签文件夹中#elif "train" in file_name:#new_file_path = os.path.join(output_path, "train", lables[int(file_label) - 1])# 如果路径不存在,则创建if not os.path.exists(new_file_path):print("路径 " + new_file_path + " 不存在,正在创建......")os.makedirs(new_file_path)# 新文件位置new_file_path = os.path.join(new_file_path, str(i))img = cv2.imread(old_file_path)sp = img.shapeheight = sp[0]width = sp[1]channel = sp[2]# 复制文件if height>400 and width >400:print("" + str(i) + "\t正在将 " + old_file_path + " 复制到 " + new_file_path)shutil.copyfile(old_file_path, new_file_path+'.jpg')else:print(old_file_path,sp)i = i + 1
# 完成提示
print("完成")```python
在这里插入代码片

文件夹不需要新建,下面的data6即是分类后的文件名,新建一个result空文件夹即可。

new_file_path = os.path.join(output_path, “data6”, file_label)

另外,这里的 old_file_path 已经包含了图片后缀(是根据你原文件的图片后置j给的,我这里都是jpg类型),然后默认分类完的图片类别为.jpg后缀,可自行尝试修改。

shutil.copyfile(old_file_path, new_file_path+’.jpg’)

大概思路就是定义一个读取图片文件名的方法,然后将所有待分类的图片名全存进list[],识别类别,如果不存在就新建一个以该类别为文件名的new_file_path,然后就是复制文件到该目录下了,整个在list[]循环下进行,大概就是这样了。

第一次想写点可能有用的东西,从前写的博客都是因为课程作业需要,水的一,希望这篇博客能对你能有亿点点帮助。最后说几句题外话,最近觉得Python还是挺有意思的,跟着某个博主整了个类似自动化办公的区域识别然后进行一些简单操作的小脚本,又听说了AI斗地主,也想玩玩,但感觉配置可能有些困难,轻薄本CPU训练效率也会比GPU低很多,加之C盘快炸了,不禁感概自己都装了些什么玩意儿。

另外有部分代码借鉴了下文,因为本人是懒狗,所以代码中有些注释的或非注释的与本文目的无关的内容就不要纠结了。

https://cxhit.blog.csdn.net/article/details/115391008

利用Python识别txt文本并根据其内容进行文件分类相关推荐

  1. 利用python处理txt文本,调整格式

    利用python处理txt文本 一 二 三 一 本文内容为:利用python字符串相关方法处理文本,调整格式.没有涉及刀正则方法. 二 具体任务为:将其中人名分离,每个单独一行, 待处理文本如下: ( ...

  2. python 利用jieba读取txt文本进行分词后存入新txt

    python 利用jieba读取txt文本进行分词后存入新txt import jieba txt = open("news.txt",encoding='UTF-8').read ...

  3. 给知网没有书签的pdf文件添加书签(利用python解析txt文件内容并为pdf添加目录)

    今天利用tampermonkey的知网下载助手脚本下载pdf格式论文时,发现论文缺少书签,而脚本可以下载一个txt格式的书签(目录),因此打算利用python将txt格式的目录添加到pdf中. txt ...

  4. python识别图片文字_如何利用Python识别图片中的文字

    一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存.但是当我们想用到里面的 ...

  5. python在当前目录创建txt文件-python根据txt文本批量创建文件夹

    前言 前言:想写这个代码的原因是因为实习的时候需要根据表格名创建对应的文件夹,如果只是很少个数文件夹的话,ctrl+shift+n还可以接受吧,可是一次就要创建几百个文件夹,这就有点方方了.所以我写了 ...

  6. 【新星计划】 Python的txt文本操作-读、写

    Python的txt文本操作-读.写 读取txt文本 python常用的读取文件函数有三种read().readline().readlines() 以读取上述txt为例,看一下三者的区别 read( ...

  7. 利用python识别身份证号后获取年龄和性别信息

    利用python识别身份证号后获取年龄和性别信息 1. 实验目的 利用python识别身份证号后,从身份证号中获取年龄和性别信息 2. 主代码 1. 身份证号码识别 # !/usr/bin/pytho ...

  8. python zxing 识别条码_详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强...

    前言 这周和大家分享如何用python识别图像里的条码.用到的库可以是zbar.希望西瓜6辛苦码的代码不要被盗了.(zxing的话,我一直没有装好,等装好之后再写一篇) 具体步骤 前期准备 用open ...

  9. 利用python保存txt文件的指定行/前n行

    ** 利用python保存txt文件的指定行/前n行-等 1.txt文件,每隔n行保存 originPath='open.txt' savePath='save.txt' # 每隔多少行保存一次 l= ...

最新文章

  1. 我对自动化测试工程师招聘的建议
  2. Java程序猿的JavaScript学习笔记(汇总文件夹)
  3. 普林斯顿算法(1.3)并查集(union-find算法)——本质就是一个数 下面的子树代表了连在一起的点...
  4. Android实例-MotionSensor加速度(XE8+小米2)
  5. Android NFC 开发实例
  6. 高效大数乘法 c语言,华为2012校园招聘上机题——大数相乘,两个超过100位的大数相乘C语言...
  7. python可以做运动控制卡吗_今天,终于明白了运动控制器和运动控制卡的区别
  8. 笨办法学R编程(1)
  9. idea ssm框架搭建详细步骤_搭建一套纯净版的SSM框架,随时CV使用它不香吗?
  10. Java异常Error和Exception
  11. Golang1.71.3下载以及安装(Linux Mac Windows)
  12. 解决java环境变量配置不生效
  13. Windows系统内置彩蛋
  14. 书评 《编码: 隐匿在计算机软硬件背后的语言》
  15. android 根据基站测距,无线测距基站
  16. 简单小方法教你如何快速提高记忆力
  17. 获取空气质量站点数据 城市数据 日数据 时数据
  18. 使用nodejs + wecharty打造你的个人微信机器人
  19. 杭州公积金修改手机号信息
  20. Ubuntu命令下卸载软件

热门文章

  1. 微服务 请求驱动和事件驱动_如何驯服事件驱动的微服务
  2. 《中学语文》期刊简介及投稿要求
  3. c语言sigsegv,(转载)如何避免 SIGSEGV
  4. APPKEY定义及APPKEY应用实例介绍
  5. ES期望损失:Stata及Python实现
  6. linux机器中毒,Centos系统中毒(sfewfesfs)处理过程记录
  7. video、webgl canvas推拉流及多媒体流协议
  8. 线性杂双功能PEG试剂OPSS-PEG-Acid,OPSS-PEG-COOH,巯基吡啶聚乙二醇羧基
  9. 博客营销有什么价值?应注意什么?
  10. mplane方式v4l2应用分析 -- VIDIOC_S_FMT(设置图像格式)