0%

如何在Python中从文件流中lazily读取多个JSON值

✔️ 这是一个非常简单的解决方案。 秘诀是尝试,失败并使用异常中的信息正确解析。 唯一的限制是该文件必须可搜索。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def stream_read_json(fn):
import json
start_pos = 0
with open(fn, 'r') as f:
while True:
try:
obj = json.load(f)
yield obj
return
except json.JSONDecodeError as e:
f.seek(start_pos)
json_str = f.read(e.pos)
obj = json.loads(json_str)
start_pos += e.pos
yield obj