Python常用小技巧(五)——批量读取json文件
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文件相关推荐
- python常用小技巧(一)——百度图片批量爬取
python常用小技巧(一)--百度图片无限制批量爬取 前言:我们在日常使用(搜壁纸,搜美女--)或者科研项目(图像识别)中经常要批量获取某种类型的图片,然而很多时候我们都需要一个个点击下载,有什么办 ...
- python常用小技巧(四)——批量图片改名
python常用小技巧(四)--批量图片改名 前言:在日常使用中我们需要批量修改图片名字,使用Python的话就可以很快地完成这个目标 一.材料准备 - os 二.程序编写 # -*- coding: ...
- 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 ...
- Python常用小技巧(二)——打开图片
Python常用小技巧(二)--打开图片 前言:对于大量图片的文件夹,你很难手工去检查每张图片是否损坏,这时候就要用程序去检查每张图片是否能打开了 一.材料准备 - os - PIL 二.程序编写 i ...
- python导入txt为dataframe-python批量读取txt文件为DataFrame的方法
我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要 ...
- 计算机给文件重命名快捷键,实用电脑小技巧:批量重命名文件常用的小工具也可以设快捷键...
沪江小编:对于很多人来说,电脑应该算是使用频率最高的工具了,可是你真的会用电脑么?实用电脑小技巧,用最简单明了的方式给你无比有趣的电脑使用新体验. [视觉遗像]注视图形中央的四个黑点30秒,然后闭眼仰 ...
- Python常用小技巧,提高刷题效率(适用于蓝桥杯python组)
1. 掌握python标准库及小技巧 python课程学习到面向对象,就可以刷题参加算法比赛了 对于蓝桥杯不支持第三方库,但学会python标准库,将事半功倍: 2. 常用的列表函数 list1.ap ...
- 【Windows小技巧】批量重命名文件
2016/12/14更新 注:如果文件名包含空格,命令应写成ren "s0 (1).gif" s001.gif,简而言之,就是加上双引号!!!原因:系统将s0和(1).gif认为是 ...
- Python自动化小技巧01——清洗并替换文件名称
本次开启一个新栏目,主要是使用Python的一些小技巧和方法,去简化生活中的一些重复性的劳动.这些py文件可以当做脚本使用,代码写好后可以全自动,点一下运行就能使用. 这些技巧和方法不涉及数据科学领域 ...
最新文章
- 1 HBase 介绍
- Tomcat根据JSP生成Servlet机制解析
- 基于思科模拟器的AAA配置与验证
- 决定对SQL Server 2008 R2进行升级
- linux服务器中解压与打包jar文件
- 以前收集到的PHP总结笔记
- java递归求和_java递归算法求和有哪些方式实现?
- Kafka面试题(附答案)
- dreamweaver8 html5,dreamweaver8
- PHP 操作redis 详细讲解
- 【BLE】CC2541之SBL
- linux点歌机硬盘,自己动手给KTV点歌机换大硬盘
- iOS入门-16手势基础一
- unity开始游戏代码_Unity的代码之夏开始
- python-ctypes用法个人总结
- 大连市新市区的规划范围
- Unity低模动物动画最新版Low Poly Animated Animals2.31官网包
- python图片转化字节流_python字节流怎么转化成图片
- Flask应用篇-数据库:SQLAlchemy 与 Flask_Sqlalchemy
- 来看什么样的软件能够让手机做到以一敌百
热门文章
- PHP/HTML混写的四种方式
- Zookeeper的默认选举
- 三天打鱼两天晒网python程序设计_Python经常会遇到三天的笔试题:钓鱼和两天的晒网:,之,三天打鱼,两天晒网...
- 第8章 数据库的分库分表
- 百度区块链所遇到的问题及处理汇总
- spring @Scheduled 注解实现的定时任务 3步走
- 暴露的全局方法_史上最便捷搭建 ZooKeeper 服务器的方法
- android开发 问卷调查案例_Android开发Handler的简单使用——随机点名案例
- Eureka覆盖状态
- centos7搭建hadoop