json檔案生成excel
阿新 • • 發佈:2020-12-24
技術標籤:python
根據目錄下的所有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')