读取骨骼数据相关的多个json,拼接到一起
# -- coding: utf-8 -- import os path = "./test" #文件夹目录 files= os.listdir(path) #得到文件夹下的所有文件名称 s = [] i=0 for file in files: #遍历文件夹 if not os.path.isdir(file): #判断是否是文件夹,不是文件夹才打开 f = open(path+"/"+file); #打开文件 i=i+1 print(i) iter_f = iter(f); #创建迭代器 str = "" for line in iter_f: #遍历文件,一行行遍历,读取文本 str = str + line s.append(str) #每个文件的文本存到list中 print(s[1]) #打印结果 print(s[2]) f=open('./f.txt','w') f.write(s[1]) #一次读取文件夹内的多个文件,存放在s数组内。然后可以考虑遍历s数组,每10个数存储一次,文件夹要有规则的生成
读取json文件,并解析到其中的数据
创建json文件:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
{ "fontFamily": "微软雅黑", "fontSize": 12, "BaseSettings":{ "font":1, "size":2 } }
读取json文件:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import json def loadFont(): f = open("Settings.json", encoding='utf-8') #设置以utf-8解码模式读取文件,encoding参数必须设置,否则默认以gbk模式读取文件,当文件中包含中文时,会报错 setting = json.load(f) family = setting['BaseSettings']['size'] #注意多重结构的读取语法 size = setting['fontSize'] return family t = loadFont() print(t)
参考:https://www.cnblogs.com/laoniubile/p/6036919.html
根据上边读取json文件的方法,将骨骼数据中body_parts部分的数据提取出来,其中骨骼数据的json格式为
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
{ "version":0.1, "people":[ { "body_parts":[ 614.318,240.562,0.840796,612.341,242.575,0.782728,540.081,244.635,0.774854,569.276,358.043,0.768752,584.981,461.723,0.867115,678.826,242.612,0.800199,661.33,352.252,0.799717,651.585,461.697,0.744037,579.118,369.762,0.561295,565.444,493.059,0.693711,571.355,618.2,0.801457,649.546,367.813,0.612515,665.162,491.085,0.734447,663.339,616.268,0.787793,600.537,224.947,0.928016,626.089,223.034,0.8756,579.144,207.338,0.719421,643.648,201.529,0.673821 ], "body_mistakes":[ ], "complete_fitness_times":0, "average_fitness_frequency":0.000000, "current_pose_type":"STAND_UP" } ], "width":1280, "height":720 }
代码为
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# -- coding: utf-8 -- import json path = "./test/Bent-over_000000000000_pose.json" #文件夹目录 def getbody_parts(): f = open(path, encoding='utf-8') #设置以utf-8解码模式读取文件,encoding参数必须设置,否则默认以gbk模式读取文件,当文件中包含中文时,会报错 data = json.load(f) #family = setting['BaseSettings']['size'] body_parts = data['people'][0]['body_parts'] #注意多重结构的读取语法,在Bent-over_000000000000_pose.json中,大括号表示定义一个对象, #中括号表示一个数组,数组用下标的方式读取 return body_parts t = getbody_parts() print(t)
根据以上方法,将一个文件夹中多个json文件读取出来,并把每个json文件中的body_parts找到,拼接成list,输出到f.txt文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# -- coding: utf-8 -- import os import json path = "./test" #文件夹目录 files= os.listdir(path) #得到文件夹下的所有文件名称 s = [] for file in files: #遍历文件夹 if not os.path.isdir(file): #判断是否是文件夹,不是文件夹才打开 f = open(path+"/"+file); #打开文件 data = json.load(f) #family = setting['BaseSettings']['size'] body_parts='' body_parts = body_parts+str(data['people'][0]['body_parts']) #注意多重结构的读取语法,在Bent-over_000000000000_pose.json中,大括号表示定义一个对象, #中括号表示一个数组,数组用下标的方式读取 s.append(body_parts) #每个文件的文本存到list中 print(s[1]) #打印结果 print(s[2]) f=open('./f.txt','w') f.write(str(s)) #一次读取文件夹内的多个文件,存放在s数组内。然后可以考虑遍历s数组,每10个数存储一次,文件夹要有规则的生成