我有一个很大的JSON文件,如下所示:
{"details":{
"1000":[
["10","Thursday","1","19.89"],
["12","Monday","3","20.90"],
...
]
"1001":[
["30","Sunday","11","80.22"],
["88","Wednesday","22","8.29"],
...
]
}
}现在,我使用以下代码从"details“值中提取"1000”、"1001“等变量中的列表,使用ijson (Interactive ):
import ijson as ijson
filename='Clean_Details.json'
with open(filename,'r') as f:
objects=ijson.items(f,'details.1001.item')
for row in objects:
print(row)
print("Done")但是问题是:循环的并没有在上面的代码中终止。打印完1001中的最终列表后,它继续运行。
我猜上面的代码中的Generator(objects)没有遇到StopIteration,不知道为什么。
有人能帮忙吗?帮点忙就好了。
发布于 2016-08-19 10:33:58
好的,因为JSON文件的大小很大,它是>800 to的,有超过一百万条记录,所以解析需要时间来完成
循环最终结束,但需要一些时间才能完成。在一个正常规格的个人电脑上,这肯定需要一些时间。
还使用:
import ijson as ijson在非常大的文件上速度要慢得多,因为大多数解析都是使用python后端代码进行的,因此为了提高速度,
用起来更好
import ijson.backends.yajl2_cffi as ijson因为它在C语言中有一个后端,使用cffi,这确实改善了上面代码的运行时间。
https://stackoverflow.com/questions/39025988
复制相似问题