super_json_v0.01 源码和解释
- func_super_json(处理Json文件方法)
def func_super_json(js_path,s,tk,vk,c_o):
'''
传入json路径:param js_path:
传入idcard和phone_no:param s:
传入需要解析的类:param tk:
传入需要输出的value对应的key,当输入方式为'key,',将key作为单独的一列输出:param vk:
传入按行输出还是按列输出(0:按行;1:按列):param c_o:
- write_txt(将all_data数组中解析好的数据进行保存)
def write_txt(txt_path):
'''
传入输出txt路径:param txt_path:
'''
with open(txt_path,'w',encoding='utf-8')as f:
for i in all_data:
f.write(i + '\n')
- GetFileList(获取传入路径下所有文件路径)
def GetFileList(dir, fileList):
'''
传入路径:param dir:
传入数组用于存储路径下的所以文件路径:param fileList:
返回该路径下所有文件的路径:return:
'''
- all_data[] (用于存储解析好的数据)
- super_json_v0.0.1源码
#coding:utf-8
import json
import jsonpath
import os
import time
'''
__author__ == 黄杰
__make_time__ == 2019/3/27
__version__ == 0.0.1
all_data : 用于存储需要输出的所以数据
write_txt : 将数据写入txt文件
GetFileList : 获取输入路径下的所有文件路径
func_super_json : 解析json方法
'''
all_data = []
def func_super_json(js_path,s,tk,vk,c_o):
'''
传入json路径:param js_path:
传入idcard和phone_no:param s:
传入需要解析的类:param tk:
传入需要输出的value对应的key,当输入方式为'key,',将key作为单独的一列输出:param vk:
传入按行输出还是按列输出(0:按行;1:按列):param c_o:
'''
data = [] #用于装载需要获取的value
with open(js_path,'r',encoding='utf-8')as r:
json_str = r.read() #根据json_path将json数据读取出来type(str)
json_ = json.loads(json_str) #将str类型的json数据转化为dict类型
tk_json_ = json_[tk]#将json进行定位
'''
获取需要的数据
k : 输入key_list中的数据
s_k : 用于判断是否需要获取key
v_l : 用于存储value
k_l : 用于存储key 仅当有','时启用
'''
for k in vk:
s_k = k.split(',')
if len(s_k) == 1:
v_l = jsonpath.jsonpath(tk_json_,'$..%s' % s_k[0])
data.append(v_l)
else:
k_l = []
v_l = jsonpath.jsonpath(tk_json_, '$..%s' % s_k[0])
for i in v_l:
k_l.append(s_k[0])
data.append(k_l)
data.append(v_l)
#===========测试区域==============
#将数据输出
# for j in data:
# print(j)
#================================
'''
准备将获取到的写入all_data中
strs : 将数据以csv格式存储为str方便后面写入文件
data_size : 数据长度
'''
if c_o == 1:
data_size = len(data[0])
for i in range(data_size):
strs = s
for j in data:
strs += str(j[i]).replace(',','') + ','
all_data.append(strs + str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))+','+str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))))
#输出测试
# print(strs[:-1])
else:
for i in data:
strs = s
for j in i:
strs += str(j).replace(',','') + ','
all_data.append(strs + str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))+','+str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))))
#输出测试
# print(strs[:-1])
def write_txt(txt_path):
'''
传入输出txt路径:param txt_path:
'''
with open(txt_path,'w',encoding='utf-8')as f:
for i in all_data:
f.write(i + '\n')
def GetFileList(dir, fileList):
'''
传入路径:param dir:
传入数组用于存储路径下的所以文件路径:param fileList:
返回该路径下所有文件的路径:return:
'''
if os.path.isfile(dir):
fileList.append(dir)
elif os.path.isdir(dir):
for s in os.listdir(dir):
newDir = os.path.join(dir, s)
GetFileList(newDir, fileList)
return fileList