- # -*- coding:utf-8 -*-
- # @Time : 2022-08-23 16:10
- # @Author : DaFuChen
- # @File : make_txt.py
- # @software: PyCharm
-
-
-
- import os
- import numpy as np
-
- def writ_txt_fuction(file_path):
- file_name = []
- file_list = os.listdir(file_path)
-
- # 下面的一部分代码是循环一个文件夹里面的多个子文件夹 就是一个文件夹里面包括多个子文件夹,子文件夹里面包含了一类的图片
- # for item in file_list:
- # items_path = os.path.join(file_path, item)
- # for items_name in os.listdir(items_path):
- # file_name.append(file_path + '\\' + items_name + '\t' + item)
-
- # 写一个只对一个文件夹进行图片分类
- for item in file_list:
- # print(item)
- file_name.append(file_path + '\\' + item)
-
-
-
-
- # print(file_name)
-
- # 随机文件名列表
- # 设置一个随机种子,方便结果可以进行复现 这个种子一定需要使用np里面的,因为下面进行打散的就是使用的是np里面进行的随机分配种子
- np.random.seed(1980)
- np.random.shuffle(file_name)
- # print(file_name)
-
-
- # 划分为训练集,测试集 比例现在做成 8:2 使用已经完成了随机分散的那个新的列表值file_name文件夹
- # train = file_list[: int(len(file_list)* 0.8)]
- train = file_name[: int(len(file_name) * 0.8)]
- test = file_name[int(len(file_name)*0.8):]
-
-
-
- # 分别将上面的路径信息写入txt文件夹当中
- # 这两个txt文件夹需要自己进行创建
- # 完成换行操作
- with open('./fish_train.txt', 'w') as f1, open('./fish_test.txt', 'w') as f2:
- for i in train:
- # 加上种类的标签
- # red是那一类图片名字特有的名字
- if 'red' in i:
- # 再加上路径手写更快捷(* - . - *)!!!
- # 标签前面有一个空格 使用两条横杠替换目标
- # f1.write(b = i.replace("E:\Python代码汇总\A大三Python练习\鱼类分类\\fish2_data\\", "") + ' 0' + '\n')
-
-
- # 因为i是一个很长的地址,所以可以按照自己的需求进行修改代码即可,最后保留自己需要存储进去的路径信息就行了
- # 这里使用\\是为了满足项目要求
- b = i.replace("E:\Python代码汇总\A大三Python练习\鱼类分类\\fish2_data\\", "")
- c = b.replace("\\", "/")
- # 下面的 O 是我对这种鱼类的分类
- f1.write(c + ' 0' + '\n')
- else:
- b = i.replace("E:\Python代码汇总\A大三Python练习\鱼类分类\\fish2_data\\", "")
- c = b.replace("\\", "/")
- f1.write(c + ' 1' + '\n')
-
-
- # 注意这个写的对象是f2,需要重点关注好,写了f1就会发生错误
- for j in test:
- if 'red' in j:
- b = j.replace("E:\Python代码汇总\A大三Python练习\鱼类分类\\fish2_data\\", "")
- c = b.replace("\\", "/")
- f2.write(c + ' 0' + '\n')
- else:
- b = j.replace("E:\Python代码汇总\A大三Python练习\鱼类分类\\fish2_data\\", "")
- c = b.replace("\\", "/")
- f2.write(c + ' 1' + '\n')
- print("完成,但是最后因为换行有一个空行,需要清除一下方式有错误出现")
-
-
-
-
-
-
- if __name__ == "__main__":
- file_path = r"E:\Python代码汇总\A大三Python练习\鱼类分类\fish2_data\fish_data\org_data"
- writ_txt_fuction(file_path)
-
-
-
-
我的文件夹里面包含了两种鱼类
最后做成的txt文件里面的信息为:
这个是自己在阿里天池里面找到的一个开源的鱼类数据集,然后抱着玩玩的心态做的一个小尝试,然后很多的预处理代码也是借鉴CSDN的大佬的代码,但是因为参照了很多篇博客最后自己做出来的,所以就不一一列举这些博客了,因为我基本是将这些博客缝合,在这里感谢分享技术的大佬们。