读取文件夹,将json文件转化为txt文件

  • 一 样例1 json文件只有一个样本
    • 1 json文件内容
    • 2 代码转化
    • 3 效果图
  • 二 样例2 json文件中有多个样本
    • 1 json文件内容
    • 2 代码转化
    • 3 效果图
  • 三 样例3 json文件单样本
    • 1 json文件内容
    • 2 代码转化
    • 3 效果图

一 样例1 json文件只有一个样本

1 json文件内容

{"version": "4.5.7","flags": {},"shapes": [{"label": "car","points": [[737.3076923076923,244.8461538461538],[1028.076923076923,555.6153846153846]],"group_id": null,"shape_type": "rectangle","flags": {}}],"imagePath": "..\\..\\images\\train2017\\000001.jpg","imageData": "/9j/4AAQSkZJR"

2 代码转化

读取文件夹,将json文件转化为txt文件,即将JSON的关键数据读出

import os
import jsonjson_dir = 'C:/Users/YourName/Desktop/coco128/labels/train2017/'  # json文件路径
out_dir = 'C:/Users/YourName/Desktop/output/'  # 输出的 txt 文件路径def get_json(json_file, filename):# 读取 json 文件数据with open(json_file, 'r') as load_f:content = json.load(load_f)# # 循环处理tmp = filenamefilename_txt = out_dir + tmp + '.txt'#创建txt文件fp = open(filename_txt, mode="w", encoding="utf-8")#将数据写入文件# 计算 yolo 数据格式所需要的中心点的 相对 x, y 坐标, w,h 的值x = (content["shapes"][0])["points"][0][0]  y = (content["shapes"][0])["points"][0][1] w = (content["shapes"][0])["points"][1][0] - (content["shapes"][0])["points"][0][0] h = (content["shapes"][0])["points"][1][1] - (content["shapes"][0])["points"][0][1]fp = open(filename_txt, mode="r+", encoding="utf-8")file_str = str(filename) + ' ' + str(round(x, 6)) + ' ' + str(round(y, 6)) + ' ' + str(round(w, 6)) + \' ' + str(round(h, 6))line_data = fp.readlines()if len(line_data) != 0:fp.write('\n' + file_str)else:fp.write(file_str)fp.close()def main():files= os.listdir(json_dir) #得到文件夹下的所有文件名称s = []for file in files: #遍历文件夹filename = file.split('.')[0]# print(tmp)get_json(json_dir+file, filename)if __name__ == '__main__':main()

3 效果图

原:
改后:

txt内容:

二 样例2 json文件中有多个样本

1 json文件内容

{"version": "3.16.2","flags": {},"shapes": [{"label": "00000001","line_color": null,"fill_color": null,"points": [[167.0,114.0],[146.0,142.0],[177.0,145.0],[214.0,129.0],[210.0,102.0],[185.0,107.0]],"shape_type": "polygon","flags": {}},{"label": "00004702","line_color": null,"fill_color": null,"points": [[306.0,71.0],[289.0,109.0],[321.0,112.0],[359.0,78.0],[329.0,57.0]],"shape_type": "polygon","flags": {}}],
"lineColor": [0,255,0,128],"fillColor": [255,0,0,128],"imagePath": "048.jpg","imageData": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a"
}

2 代码转化

import os
import jsonjson_dir = 'C:/Users/YourName/Desktop/coco/jsonDir/'  # json文件路径
out_dir = 'C:/Users/YourName/Desktop/coco/outputDir/'  # 输出的 txt 文件路径def get_json(json_file, filename):# 读取 json 文件数据with open(json_file, 'r') as load_f:content = json.load(load_f)# # 循环处理tmp = filenamefilename_txt = out_dir + tmp + '.txt'#创建txt文件fp = open(filename_txt, mode="w", encoding="utf-8")#将数据写入文件str_tmp = "" #存储字符串内容#1.获取version、flags数据version = content["version"]flags = content["flags"]#暂存内容str_tmp = str(version)+"\n"+str(flags)+"\n"#2. 获取shapes数组中的数据#循环读取 shapes中的每一组数据,json文件中有2组数据,循环则是2个 [0,1]for i in range(2):label = (content["shapes"][i])["label"]line_color = (content["shapes"][i])["line_color"]fill_color = (content["shapes"][i])["fill_color"]str_tmp += str(label) + "\n" + str(line_color) + "\n"  + str(fill_color) + "\n"  ##暂存内容#读取points中的数据,有6组数据points_size = len((content["shapes"][i])["points"])for j in range(points_size):x = (content["shapes"][i])["points"][j][0]y = (content["shapes"][i])["points"][j][1]str_tmp += str(x) + "        " + str(y) + "\n"  ##暂存内容#读取shape_type,flagsshape_type = (content["shapes"][i])["shape_type"]flags = (content["shapes"][i])["flags"]str_tmp += str(shape_type) + "        " + str(flags) + "\n"  ##暂存内容#3. 获取lineColor、fillColor、imagePath、imageDataline_Color = content["lineColor"]fill_Color = content["fillColor"]imagePath = content["imagePath"]imageData = content["imageData"]#lineColor是数组,获取并存储lineColorfor i in range(len(line_Color)):str_tmp += str(line_Color[i]) + "   "str_tmp += "\n" #换行效果#fillColor与lineColor一样,也为数组,获取并存储fillColorfor i in range(len(fill_Color)):str_tmp += str(fill_Color[i]) + "   "str_tmp += "\n" #换行效果str_tmp += str(imagePath) + "        " + str(imageData) + "\n"  ##暂存内容fp = open(filename_txt, mode="r+", encoding="utf-8")file_str = str_tmpline_data = fp.readlines()if len(line_data) != 0:fp.write('\n' + file_str)else:fp.write(file_str)fp.close()def main():files= os.listdir(json_dir) #得到文件夹下的所有文件名称s = []for file in files: #遍历文件夹filename = file.split('.')[0]# print(tmp)get_json(json_dir+file, filename)if __name__ == '__main__':main()

3 效果图

三 样例3 json文件单样本

1 json文件内容

{"marks":[[240.47823834196888,57.812953367875636],[226.80673575129526,388.58290155440415],[235.33316062176164,227.56113989637305]],"slots":[[3,1, 1,90],[2,3,1,90]]}

2 代码转化

import os
import jsonjson_dir = 'C:/Users/QiYan/Desktop/train/'  # 放json文件路径,train是放json文件的文件夹
out_dir = 'C:/Users/QiYan/Desktop/output/'  # 输出的 txt 文件路径,output是放txt文件的文件夹def get_json(json_file, filename):# 读取 json 文件数据with open(json_file, 'r') as load_f:content = json.load(load_f)# # 循环处理tmp = filenamefilename_txt = out_dir + tmp + '.txt'#创建txt文件fp = open(filename_txt, mode="w", encoding="utf-8")#将数据写入文件#首先是mark,二维数组3*2,提取数据如下x1y1 = content["marks"][0][0]x1y2 = content["marks"][0][1]x2y1 = content["marks"][1][0]x2y2 = content["marks"][1][1]x3y1 = content["marks"][2][0]x3y2 = content["marks"][2][1]#slots为2*4的二维数组,提取数据如下s_x1y1 = content["slots"][0][0]s_x1y2 = content["slots"][0][1]s_x1y3 = content["slots"][0][2]s_x1y4 = content["slots"][0][3]s_x2y1 = content["slots"][1][0]s_x2y2 = content["slots"][1][1]s_x2y3 = content["slots"][1][2]s_x2y4 = content["slots"][1][3]#数据写入txt文档fp = open(filename_txt, mode="r+", encoding="utf-8")file_str = str(filename) + '\n' + str(round(x1y1, 6)) + ' ' + str(round(x1y2, 6)) + ' ' +\str(round(x2y1, 6)) + ' ' + str(round(x2y2, 6)) + str(round(x3y1, 6)) + ' ' +  \str(round(x3y2, 6)) + '\n' + str(round(s_x1y1, 6)) +' ' + str(round(s_x1y2, 6)) + ' ' + \str(round(s_x1y3, 6)) + ' ' + str(round(s_x1y4, 6)) +' ' + str(round(s_x2y1, 6)) + \str(round(s_x2y2, 6)) + ' ' + str(round(s_x2y3, 6)) +' ' + str(round(s_x2y4, 6))   line_data = fp.readlines()if len(line_data) != 0:fp.write('\n' + file_str)else:fp.write(file_str)fp.close()def main():files= os.listdir(json_dir) #得到文件夹下的所有文件名称s = []for file in files: #遍历文件夹filename = file.split('.')[0]# print(tmp)get_json(json_dir+file, filename)if __name__ == '__main__':main()

3 效果图

批量处理:读取文件夹,将json文件转化为txt文件相关推荐

  1. 【python】保存某个文件夹下所有图片名字到一个txt文件里

    用python实现读取某一文件夹下的所有图片名字到一个txt文件 import os dir1='/data/Datasets/JPEGImages'#图片文件存放地址 txt1 = '/data/D ...

  2. 图像分类 数据准备(将文件夹中所有图片路径写到TXT文件中)

    0文件夹里都是负样本,1文件夹的图像都是正样本图片,接下来就是生成图片的描述文件. 进入控制台 进入你的0/1文件夹下,输入以下命令: dir /b/s/p/w *.jpg > pos.txt, ...

  3. Ubuntu下如何将文件夹中图片索引写进txt文件中

    方法之一 sudo find dress/ -name *.jpg | cut -d '/' -f2-3 > train_dress.txt "find"后面跟的是当前文件下 ...

  4. 根据文件夹中的图片数据集生成.txt文件标签

    文章目录 前言 数据集格式 Python实现 注意事项 前言 深度学习中的与图片有关的任务,如图像识别,图像分类,目标检测,图像分割等,在准备图片数据集时,图片的序号和标签往往是由.txt文件获取的. ...

  5. ubuntu18.04将文件夹中的所有图片名字写入txt

    参考文章:Ubuntu下如何将文件夹中图片索引写进txt文件中 sudo find dress/ -name *.jpg | cut -d '/' -f2-3 > train_dress.txt ...

  6. R语言使用fs包的path_wd函数基于自定义文件路径规则,批量生成多个文件或者文件夹对应的绝对(absolute)文件路径(constructs absolute path)

    R语言使用fs包的path_wd函数基于自定义文件路径规则,批量生成多个文件或者文件夹对应的绝对(absolute)文件路径(constructs an absolute path from the ...

  7. cmd批量打印文件夹下的文件名,以及打印文件树

    1.打印文件夹下文件名输出到00.txt中 dir *.* /b> 00.txt 运行get fileName.bat结果如图: 2.文件夹下以及子孙文件夹下的文件名以树形式打印 tree  / ...

  8. vue前端上传文件夹的插件_基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件...

    1. 前言 之前公司要在管理系统中做一个全局上传插件,即切换各个页面的时候,上传界面还在并且上传不会受到影响,这在vue这种spa框架面前并不是什么难题.然而后端大佬说我们要实现分片上传.秒传以及断点 ...

  9. java解压服务器文件夹,java获取远程服务器上的文件夹

    java获取远程服务器上的文件夹 内容精选 换一换 安装X722板载网卡驱动软件包,使裸金属服务器支持在v5服务器上下发.其他类型服务器可跳过此步骤.本文以Windows Server 2016为例, ...

  10. 【Java文件操作(五)】从txt文件中读取字符串、乱码原因

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

最新文章

  1. 职业生涯发展技巧20则
  2. 阿里面试题:使用dubbo过程中遇到过哪些坑?
  3. C语言试题二十九之编写函数int function(int lim,int aa[max])求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。
  4. GDB调试使用技巧 - 专职C++ - C++博客
  5. Ubuntu 16.04 + Nginx + Django 项目部署
  6. Spring : Spring Aop JDK和CGLIB动态代理调用过程
  7. ecall 方法必须打包到系统模块中_基于SpringBoot+Vue+Mysql开发的进销存管理系统
  8. linux 用户登陆全部记录,Linux—— 记录所有登陆用户的历史操作记录
  9. python基本语法结构
  10. 整理农行面试软开最常问到的题---------框架
  11. vgc机器人编程1到13题_工业机器人编程与实操 期末试题
  12. 开发板运行可执行文件提示not found的问题
  13. Google Chrome 常用插件清单
  14. 什么是UPS UPS的选购技巧介绍
  15. 护眼灯到底有没有护眼的效果?带你了解市面上的护眼灯真的护眼吗
  16. cp: omitting directory xxx
  17. 20175312陶光远 与 20175309刘雨恒 结对
  18. vscode写R语言代码
  19. 一文搞懂四种 WebSocket 使用方式
  20. Qt之撤销命令视图的使用(QUndoView)

热门文章

  1. npm安装同一个包的不同版本,以echarts为例
  2. 去掉whatsns问答系统页面底部隐藏的官网链接
  3. 不要轻易在简历上写我热爱编程,我热爱学习
  4. c语言求自然数1 10之和,C程序计算自然数之和
  5. 华盛顿大学华人团队进入微软Imagine Cup总决赛!
  6. XShell远程登录华为云服务器
  7. 请选择正确html,请选择可以使单元格中的内容进行左对齐的正确HTML标记(      )。...
  8. win7系统获得管理员取得所有权的方法【系统天地】
  9. Mac OS下安装Photoshop CC 2017破解版
  10. Hive 内部表和外部表