Python常用小技巧(五)——批量读取json文件

前言:其实Python能够批量读取很多文件,这里,本人以json文件为例(json是标注图片时生成的文件,记录有标注的坐标和标签,友情推荐标注图片的工具:labelme),读取想要的数据。大家也可以稍做修改,去读取其他类型的文件。

一、材料准备

- Python
 - os
 - json

二、代码编写

首先我们来观察一下我们需要处理的json文件

打开json文件,我们可以看到一下内容

我们需要获取的信息是 label 后面标注的种类,还有坐标信息

期望输出的格式是:

结构:
n.json x1,y1,x2,y2,lable1 x1,y1,x2,y2,label2
样例:
21.json 203,1,511,116,shoes 248,2,350,44,welt 

所以,知道标准后,我们的代码如下:

# -*- coding:utf8 -*-
import  json
from os import listdir
import os
path = '/home/ljt/Documents/labelme'filelist = listdir(path)
#for i in  filelist:
#print(filelist[0].split(".")[0])#   i.split()
fileIndex =[]#文件名读入时并非按照我们常识中的按照文件名字顺序读入,
#例如:1.json,2.json,3.json;程序可能会按 3,1,2 的顺序读入,
#这对我们后面批量处理造成很大的不便,所以读入文件名后,
#我们要手动地对文件名进行一次排序
#以下就是排序操作
for i in range(0,len(filelist)):index = filelist[i].split(".")[0]fileIndex.append(int(index))
#new_filelist =[]
for j in range(1,len(fileIndex)):for k in range(0,len(fileIndex)-1):if fileIndex[k]>fileIndex[k+1]:preIndex = fileIndex[k]preFile = filelist[k]fileIndex[k] = fileIndex[k+1]filelist[k] = filelist[k+1]fileIndex[k+1] =preIndexfilelist[k+1] = preFile#完成排序后,开始按照文件名顺序读取文件内容信息
data = []#记录每个文件最终信息的列表
labelpath = '/home/ljt/Documents/labelme/'
for file in filelist:with open(labelpath+file, 'r') as txt:lines = txt.readlines()eachdata = []#记录单个文件信息的列表eachdata.append(file)  # fileNamefor each in range(0,len(lines)):word = lines[each].split('"')for i in range(0,len(word)):if word[i] == 'shoes':eachdata.append(int(int(lines[each + 5].split(',')[0]) * 416 / 512))eachdata.append(int(int(lines[each + 6].split(',')[0]) * 416 / 512))eachdata.append(int(int(lines[each + 9].split(',')[0]) * 416 / 512))eachdata.append(int(int(lines[each + 10].split(',')[0]) * 416 / 512))#(xmin,ymin,xmax,ymax,'shoes')eachdata.append('0')elif word[i] == 'welt':eachdata.append(int(int(lines[each + 5].split(',')[0]) * 416 / 512))eachdata.append(int(int(lines[each + 6].split(',')[0]) * 416 / 512))eachdata.append(int(int(lines[each + 9].split(',')[0]) * 416 / 512))eachdata.append(int(int(lines[each + 10].split(',')[0]) * 416 / 512))  # (xmin,ymin,xmax,ymax,'shoes')eachdata.append('1')txt.close()data.append(eachdata)#记录完成后,开始将数据写入txt文件
with open('data.txt', 'w') as txt:for eachdata in data:line =eachdata[0]+' 'i=0for i in range(1,len(eachdata)):if i % 5 ==0 and i > 1 and i!=len(eachdata)-1:s =str(eachdata[i])+' 'line = line + selif i==len(eachdata)-1:line = line + str(eachdata[i])else:s=str(eachdata[i])+','line = line+slines=line.replace('json','jpg')+'\n'txt.writelines('resize/'+lines)txt.close()
print('finish')#        line='json'
#        while line:#           line = txt.readline()#          word = line.split()#         for i in range(0,len(word)):#            if word[i] == "shoes":

最终,我们能够得到一个这样的txt文件

其中 0代表的是shoes,1代表welt

Python常用小技巧(五)——批量读取json文件相关推荐

  1. python常用小技巧(一)——百度图片批量爬取

    python常用小技巧(一)--百度图片无限制批量爬取 前言:我们在日常使用(搜壁纸,搜美女--)或者科研项目(图像识别)中经常要批量获取某种类型的图片,然而很多时候我们都需要一个个点击下载,有什么办 ...

  2. python常用小技巧(四)——批量图片改名

    python常用小技巧(四)--批量图片改名 前言:在日常使用中我们需要批量修改图片名字,使用Python的话就可以很快地完成这个目标 一.材料准备 - os 二.程序编写 # -*- coding: ...

  3. pythonencoding etf-8_etf iopv python 代码30个Python常用小技巧

    1.原地交换两个数字x, y =10, 20 print(x, y) y, x = x, y print(x, y) 10 20 20 10 2.链状比较操作符n = 10 print(1 print ...

  4. Python常用小技巧(二)——打开图片

    Python常用小技巧(二)--打开图片 前言:对于大量图片的文件夹,你很难手工去检查每张图片是否损坏,这时候就要用程序去检查每张图片是否能打开了 一.材料准备 - os - PIL 二.程序编写 i ...

  5. python导入txt为dataframe-python批量读取txt文件为DataFrame的方法

    我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要 ...

  6. 计算机给文件重命名快捷键,实用电脑小技巧:批量重命名文件常用的小工具也可以设快捷键...

    沪江小编:对于很多人来说,电脑应该算是使用频率最高的工具了,可是你真的会用电脑么?实用电脑小技巧,用最简单明了的方式给你无比有趣的电脑使用新体验. [视觉遗像]注视图形中央的四个黑点30秒,然后闭眼仰 ...

  7. Python常用小技巧,提高刷题效率(适用于蓝桥杯python组)

    1. 掌握python标准库及小技巧 python课程学习到面向对象,就可以刷题参加算法比赛了 对于蓝桥杯不支持第三方库,但学会python标准库,将事半功倍: 2. 常用的列表函数 list1.ap ...

  8. 【Windows小技巧】批量重命名文件

    2016/12/14更新 注:如果文件名包含空格,命令应写成ren "s0 (1).gif" s001.gif,简而言之,就是加上双引号!!!原因:系统将s0和(1).gif认为是 ...

  9. Python自动化小技巧01——清洗并替换文件名称

    本次开启一个新栏目,主要是使用Python的一些小技巧和方法,去简化生活中的一些重复性的劳动.这些py文件可以当做脚本使用,代码写好后可以全自动,点一下运行就能使用. 这些技巧和方法不涉及数据科学领域 ...

最新文章

  1. 1 HBase 介绍
  2. Tomcat根据JSP生成Servlet机制解析
  3. 基于思科模拟器的AAA配置与验证
  4. 决定对SQL Server 2008 R2进行升级
  5. linux服务器中解压与打包jar文件
  6. 以前收集到的PHP总结笔记
  7. java递归求和_java递归算法求和有哪些方式实现?
  8. Kafka面试题(附答案)
  9. dreamweaver8 html5,dreamweaver8
  10. PHP 操作redis 详细讲解
  11. 【BLE】CC2541之SBL
  12. linux点歌机硬盘,自己动手给KTV点歌机换大硬盘
  13. iOS入门-16手势基础一
  14. unity开始游戏代码_Unity的代码之夏开始
  15. python-ctypes用法个人总结
  16. 大连市新市区的规划范围
  17. Unity低模动物动画最新版Low Poly Animated Animals2.31官网包
  18. python图片转化字节流_python字节流怎么转化成图片
  19. Flask应用篇-数据库:SQLAlchemy 与 Flask_Sqlalchemy
  20. 来看什么样的软件能够让手机做到以一敌百

热门文章

  1. PHP/HTML混写的四种方式
  2. Zookeeper的默认选举
  3. 三天打鱼两天晒网python程序设计_Python经常会遇到三天的笔试题:钓鱼和两天的晒网:,之,三天打鱼,两天晒网...
  4. 第8章 数据库的分库分表
  5. 百度区块链所遇到的问题及处理汇总
  6. spring @Scheduled 注解实现的定时任务 3步走
  7. 暴露的全局方法_史上最便捷搭建 ZooKeeper 服务器的方法
  8. android开发 问卷调查案例_Android开发Handler的简单使用——随机点名案例
  9. Eureka覆盖状态
  10. centos7搭建hadoop