知识点1:python读取json文件,并把内容转化为字典
import json with open("/User/Downloads/trace.json",'r') as f: context=f.read() temp=json.loads(context)
注意事项:如果json文件如下格式:[{"PageJME": "1171", "GPCJME": "32234", "ServerJME": "2787", "ClientJME": "937"}, {"PageJME": "1171", "GPCJME": "32234", "ServerJME": "2787", "ClientJME": "937"}]
则可直接读取,如果是
A=[{"PageJME": "1171", "GPCJME": "32234", "ServerJME": "2787", "ClientJME": "937"}, {"PageJME": "1171", "GPCJME": "32234", "ServerJME": "2787", "ClientJME": "937"}]
则读取是要去除前面的字符 “A=”。
知识点2: python将字典存储为json格式
json.dump(temp, json_file2, ensure_ascii=False)
temp字典,json_file2文件名
知识点3:判断文件是否已经存在,若无,则新建;判断文件里是否有内容
if not os.path.exists(file_name):
os.system(r"touch %s" % file_name
if os.path.getsize(file_name):
file_name文件名
import datetime today = datetime.date.today().strftime("%Y%m%d")
将日期读取出来,存储为字符串。
如下代码主要用于,读取一个字符串代码,将其转化为字典,提出中间重要的数据。
将这个数据存储为json,(这个要实现不断读取数据,存储为json格式,这个就需要不断读取数据,添加进去,再全部存储进去,直接存储进去会出现格式问题)。然后将这个文件中的数据,取平均值,再存入另一个文件中,这个也有可能不断存储,所以也要读取出来,添加新的数据,再存储起来。
import json import datetime import os def str_to_dic(): # data_jme_list=[] data_jme = {} with open("/Users/jiaojiaoyang/Downloads/trace.json", 'r') as f: context=f.read()[16:] # names=context[0:15] # print(type(f.read())) temp=json.loads(context) # print(temp) print(type(temp)) data_jme['PageJME']=temp['JMTReport'][1]['PageJME'] data_jme['GPCJME']=temp['JMTReport'][24]['GPCJME'] data_jme['ServerJME'] = temp['JMTReport'][25]['ServerJME'] data_jme['ClientJME'] = temp['JMTReport'][26]['ClientJME'] # data_jme_list.append(data_jme) return data_jme def save_jmt_into_file_with_data(dic,date): file_name="jme_"+date+".json" if not os.path.exists(file_name): os.system(r"touch %s" % file_name) #将文件里的文件读取出来,在数组中添加新的元素(字典) if os.path.getsize(file_name): json_file = open(file_name, 'r') context = json_file.read() temp = json.loads(context) json_file.close() temp.append(dic) json_file2=open(file_name,'w', encoding='utf-8') #temp=json.dumps(temp) json.dump(temp, json_file2, ensure_ascii=False) json_file.close() return file_name else: with open(file_name,'w') as json_file: data_json = [] data_json.append(dic) #data_json = json.dumps(data_json) json.dump(data_json, json_file, ensure_ascii=False) print('success') json_file.close() return file_name def updata_average_into_file(file_name,date): if not os.path.exists(file_name): os.system(r"touch %s" % file_name) if os.path.getsize(file_name): read_json=open(file_name,'r') context = read_json.read() temp = json.loads(context) #求取平均值 average={} sum1=0 for i in range(len(temp)): sum1+=int(temp[i]['PageJME']) average["PageJME"]=sum1/len(temp) sum2=0 for i in range(len(temp)): sum2+=int(temp[i]['GPCJME']) average['GPCJME']=sum2/len(temp) sum3=0 for i in range(len(temp)): sum3+=int(temp[i]['ServerJME']) average['ServerJME']=sum3/len(temp) sum4=0 for i in range(len(temp)): sum4+=int(temp[i]['ClientJME']) average['ClientJME']=sum4/len(temp) read_json.close() #存储文件,将文件读取出来,再存进去 file_name2 = "jme_averge.json" if not os.path.exists(file_name2): os.system(r"touch %s" % file_name2) if os.path.getsize(file_name2): json_file = open(file_name2, 'r') context = json_file.read() temp = json.loads(context) json_file.close() temp[date]=average json_file2=open(file_name2,'w', encoding='utf-8') #temp=json.dump(temp) json.dump(temp, json_file2, ensure_ascii=False) json_file.close() print('success') else: with open(file_name2,'w') as json_file: data_json = {} data_json[date]=average #data_json = json.dump(data_json) json.dump(data_json, json_file, ensure_ascii=False) print('success') json_file.close() else: print('无文件') def save_jme_into_file(dic): today = datetime.date.today().strftime("%Y%m%d") file_name=save_jmt_into_file_with_data(dic, today) updata_average_into_file(file_name,today) if __name__ == '__main__': today = datetime.date.today().strftime("%Y%m%d") data1=str_to_dic() data2=str_to_dic() # save_jmt_into_file_with_data(data1,today) # save_jmt_into_file_with_data(data2,today) save_jme_into_file(data1) # save_jme_into_file(data2) # read_json_to_dic()