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

article/2025/3/15 15:42:57

事情是这样的,有一个图片数据集需要根据分成很多类以便于给其设置标签,但所有的图片都在一个文件里,另外又给了个.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


http://chatgpt.dhexx.cn/article/0yCJREg9.shtml

相关文章

C# 批量修改文件名称

目的 对文件夹中所有文件名实现批量修改(添加新字符) 思路 获取文件夹路径获取文件夹中所有文件的文件名对文件名进行批量修改 方法 窗口设计 获取文件夹路径 使用FolderBrowserDialog控件获取文件夹路径,并用Directory.Exists方法对路径…

Unity Shader入门精要之Unity 提供的内置文件和变量

Unity系列文章目录 文章目录 Unity系列文章目录前言5.3.1 内置的包含文件5.3.2 内置的变量 二、Unity 提供的Cg/HLSL 语义5.5 程序员的烦恼:Debug5.6 小心:渲染平台的差异5.7 Shader 整洁之道参考 前言 上一节讲述了如何在Unity 中编写一个基本的顶点/片…

《python数学实验与建模》(10)图论模型

10.1 写出图10.20所示非赋权无向图的关联矩阵和邻接矩阵 绘制图 import networkx as nx import pylab as plt import numpy as np Anp.zeros((6,6)) List[(1,2),(1,4),(2,3),(3,4),(3,5),(3,6),(4,5),(4,6),(5,6)] for i in List:A[i[0]-1,i[1]-1]1 Gnx.Graph(A) posnx.spring…

2021年美国数学建模C题的数据处理

2021年美国数学建模C题的数据处理 C题数据分类存放部分批量提取图像数据转化jpg图像格式 C题数据分类存放部分 在拿到C题的数据后,避让要做的一个事情是图像数据的分类。根据2021MCM_ProblemC_ Images_by_GlobalID表格中,可以将图片和ID号对应起来&…

Unity Shader入门精要笔记(五):其他数学相关介绍

本系列文章由Aimar_Johnny编写,欢迎转载,转载请标明出处,谢谢。 http://blog.csdn.net/lzhq1982/article/details/73747162 前两篇介绍了Unity Shader的主要数学部分,书上还有些相关的数学介绍,将在这篇做最后的总结。…

2020年数维杯国际大学生数学建模B题股票价格的混沌模型求解全过程文档及程序

2020年数维杯国际大学生数学建模 B题 股票价格的混沌模型 原题再现: 上市公司股价的变化可以直接反映上市公司的经营状况和市场的认可度。股票价格的建模和预测一直是一个难题。最重要的因素是股票价格既有趋势因素又有随机因素。因此,股票市场是一个非…

ugpost_tcl文件

########################## TCL Event Handlers ########################## b.tcl - 3_axis_mill 这是 3 轴铣床。 Created by dp Wednesday, November 06, 2019 8:52:33 AM China Standard Time with Post Builder version 10.0.3. #####################################…

数据结构课设 (快餐店 POS 机计费系统、成绩分析、算术表达式)

目录 快餐店 POS 机计费系统 学生成绩分析系统 算术表达式 参考文献 快餐店 POS 机计费系统 【任务描述】 校园快餐店一共出售三大类食品:饮料,主食,小食品。设计一个快餐店的 POS 机计费系统, 对快餐店的食品信息、销售信息…

linux文件系统-文件的写与读

只有打开可文件以后,或者建立起进程与文件之间的连接之后,才能对文件进行读写。文件的读写主要是通过系统调用read和write来完成的,对于读写的进程,目标文件由一个打开文件号代表。 为了提高效率,稍微复杂一点的操作系…

数学模型——泊车模型(2022年Mathorcup数学建模挑战赛C题,含Matlab代码)

写在前面 之前做了一个2022年Mathorcup数学建模挑战赛C题的比赛心得,上一篇文章主要讲了A*算法的改进以及A*算法如何在C题的第3问的应用。本文主要介绍C题的第2问,即三种泊车模型如何建立,因此部分并非我写,在比赛期间&#xff0…

Python小白的数学建模课-16.最短路径算法

最短路径问题是图论研究中的经典算法问题,用于计算图中一个顶点到另一个顶点的最短路径。在图论中,最短路径长度与最短路径距离却是不同的概念和问题,经常会被混淆。求最短路径长度的常用算法是 Dijkstra 算法、Bellman-Ford 算法和Floyd 算法…

数学建模有关DNA序列k-mer index的问题

原问题是这样的: 给定一个DNA序列,这个系列只含有4个字母ATCG,如 S “CTGTACTGTAT”。给定一个整数值k,从S的第一个位置开始,取一连续k个字母的短串,称之为k-mer(如k 5,则此短串为CT…

数学建模暑期集训26:遗传算法

遗传算法是优化类问题的经典智能算法。本篇将介绍遗传算法的基本概念以及利用遗传算法来求解单目标规划模型。 达尔文进化论的基本思想 遗传算法的设计是受到达尔文进化论的启发。先看下面这张图的几个基本概念。 一些花构成一个种群。 每朵花被称为个体。 每个个体内有染色…

2021年亚太杯三等奖选手C题思路

文章目录 亚太杯C题第一小问亚太杯C题第二小问亚太杯C题第三小问亚太杯C题第四小问亚太杯C题第五小问 昨天晚上刚出了亚太杯的成绩,获得了三等奖,毕竟是第一次参加数学建模比赛,不是成功参与奖就很高兴了,结束了之后,还…

python使用networks读取txt文件画一个有权有向图

class demo():def __init__(self):self.file_pathtest.txt#图文件 def draw_graph(self):G2 nx.DiGraph() # 创建:空的 有向图f open(self.file_path)lines [l.split() for l in f.readlines() if l.strip()]# print(lines)for i in lines:G2.add_edge(i[0],…

数学建模常用功能

目录 pandas读取数据 查看数据异常 提取指定列 将dataframe数据以numpy形式提取 数据划分 随机森林回归 GBDT回归 特征重要性可视化 输出: ​ 绘制3D散点图 导入自定义包且.py文件修改时jupyter notebook自动同步 dataframe删除某列中重复字段并删除对应行…

c语言文件操作

文件操作读写 1 文件处理原理及基本概念 C语言的文件处理功能,大体上分为两种:一种是设置缓冲区,另一种是不设置缓冲区。因为不设置缓冲区的方法直接对磁盘进行操作,速度较慢,并且由于不是C的标准函数,跨…

无人机视角展示(无人机图像定位 )--某数学建模A题MATLAB代码

近期没啥空,水个简单的。。。。 目前只写了第一问,有空再写。。。。。 问题描述 无人驾驶飞机简称“无人机”,是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机。搭载图像设备的无人机在高空航拍、区域巡视、军事侦查等方面有广泛…

2020 全国大学生数学建模竞赛C题思路+代码

题目链接:天翼云盘 珍藏美好生活 家庭云|网盘|文件备份|资源分享 前言 又是一年数据挖掘题型,第一次接触这种题型还是在去年的mathorcup上,这种题的难度就在于指标的建立和数据的处理上。后面会出一份关于数据挖掘题型,我的相关经…

PU learning半监督学习

半监督学习 Positive-unlabeled learning 什么是半监督学习 让学习器不依赖外界交互、自动地利用未标记样本来提升学习性能,就是半监督学习(semi-supervised learning)。 要利用未标记样本,必然要做一些将未标记样本所揭示的数…