慈祥的消炎药 · android12设备 ...· 1 月前 · |
沉着的跑步鞋 · 杭城尖子生必看 ...· 2 月前 · |
想出家的海龟 · 加油,新学期!深汕特别合作区春季开学啦_鲘门 ...· 3 月前 · |
睡不着的豌豆 · windows10英特尔3165无线网卡开启 ...· 4 月前 · |
文武双全的松树 · 卖不动的奔驰EQC减配出新款,依然逃不掉“夭 ...· 1 年前 · |
我有多个(1000+) JSON文件,每个文件都包含一个JSON数组。我想把所有这些文件合并成一个文件。
我想出了以下内容,它读取这些文件中的每一个,并创建一个包含所有内容的新对象。然后将这个新对象写入一个新文件中。
这种方法有效吗?有没有更好的方法来做到这一点?
head = []
with open("result.json", "w") as outfile:
for f in file_list:
with open(f, 'rb') as infile:
file_data = json.load(infile)
head += file_data
json.dump(head, outfile)
发布于 2015-06-23 00:54:19
head
应该有一个类似于
merged_files
的名称,而且您不应该使用
f
作为迭代器变量。像
json_file
这样的东西会更好。
发布于 2016-07-09 13:55:32
这在本质上是 阿列克斯兰评论 阐明的:
解析和序列化JSON并不是免费的,所以您可能希望避免它。我认为您可以只输出
"["
,第一个文件,
","
,第二个文件等等,
"]"
并将其称为一天。如果所有输入都是有效的JSON,除非我大错特错,否则这也应该是有效的JSON。
在代码中,版本1:
def cat_json(outfile, infiles):
file(outfile, "w")\
.write("[%s]" % (",".join([mangle(file(f).read()) for f in infiles])))
def mangle(s):
return s.strip()[1:-1]
第2版:
def cat_json(output_filename, input_filenames):
with file(output_filename, "w") as outfile:
first = True
for infile_name in input_filenames:
with file(infile_name) as infile:
if first: