根据目录下的所有json文件生成excel
import json
import os
import pandas as pd
class download():
def __init__(self):
self.bool = True
def transcsv(self, jsondata, csvpath):
csv_file = open(csvpath, 'a', newline='', encoding='utf-8')
# 读文件
ls = json.loads(jsondata) # 将json格式的字符串转换成python的数据类型,解码过程
if ls:
if self.bool:
data = [list(ls[0].keys())] # 获取列名,即key
self.bool = False
else:
data = []
for item in ls:
data.append(map(str, list(item.values()))) # 获取每一行的值value
# 写入文件
for line in data:
csv_file.write(repr("@@".join(line))[1:-1] + "\n") # 以逗号分隔一行的每个元素,最后换行 fw.close() #关闭csv文件
# 关闭文件
csv_file.close()
# 导出指定表数据
def download_data(self,file_dir,csvpath):
for root, dirs, files in os.walk(file_dir):
for i in files:
path = os.path.join(root,i)
with open(path,encoding='utf-8') as f:
self.transcsv(f.read(), csvpath)
df = pd.read_csv(csvpath, encoding='utf-8', sep="@@", engine='python',skipinitialspace=True)
writer = pd.ExcelWriter(csvpath.split('.')[0] + '.xlsx', engine='xlsxwriter',
options={'strings_to_urls': False})
df.to_excel(writer)
writer.close()
c = download()
c.download_data('d:/test/','d:/test.csv')