今天遇到json数据的批量处理
把json转成csv
其实json文件就是key value的形式,读到python就是dict,如果外面套了[],读到python里面就变成list,读取的时候需要loads和load的区别
load是对已经读入到内存的文件的解析为python的变量
loads是从硬盘读取
我没有用到dump
对于写csv,只需要利用csv.writer就可以了
有很多写入的形式,这里就转换成如何把dict和list写入到csv,很简单,写了几个函数
import json
import csv
import codecs
import os
def acquire_json_file_name(dir_name):
lst = []
for root, dirs, files in os.walk(dir_name):
for file in files:
if os.path.splitext(file)[1] == '.json':
lst.append(os.path.splitext(file)[0])
return lst
def process_json_single(filename, resname):
file = open(filename, encoding='UTF-8')
json_file = json.load(file)
file.close()
f = codecs.open(resname, 'w', 'utf_8_sig')
writer = csv.writer(f)
for item in json_file:
writer.writerow(item.values())
f.close()
def process_all_dir(source_dir, res_dir):
list_name = acquire_json_file_name(source_dir)
for single_name in list_name:
print(single_name)
file_name = source_dir + single_name + '.json'
res_name = res_dir + single_name + '.csv'
process_json_single(file_name, res_name)
def process_all_dir_dict(source_dir, res_dir):
list_name = acquire_json_file_name(source_dir)
for single_name in list_name:
print(single_name)
file_name = source_dir + single_name + '.json'
res_name = res_dir + single_name + '.csv'
file = open(file_name, encoding='UTF-8')
json_file = json.load(file)
file.close()
f = codecs.open(res_name, 'w', 'utf_8_sig')
writer = csv.writer(f)
writer.writerow(json_file.values())
if json_file['user'] != 'empty':
writer.writerow(json_file["user"].values())
f.close()