慷慨的鸵鸟 · mysql单列索引、多列索引的使用_单列索引 ...· 5 月前 · |
稳重的凉茶 · Eclipse中perspective的两种 ...· 1 年前 · |
俊逸的创口贴 · nodejs解析xml文件(xml->jso ...· 1 年前 · |
礼貌的椰子 · 操作系统4:硬链接和软链接 - 知乎· 1 年前 · |
开朗的小笼包 · OkHttp3的连接池及连接建立过程分析_o ...· 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:
礼貌的椰子 · 操作系统4:硬链接和软链接 - 知乎 1 年前 |