我有一个json文件,其内容如下: -
[
{"time":"56990","device_id":"1","kwh":"279.4"},
{"time":"60590","device_id":"1","kwh":"289.4"},
{"time":"64190","device_id":"1","kwh":"299.4"},
{"time":"67790","device_id":"1","kwh":"319.4"},
]
现在我想在python中使用seek
和tell
方法一次读取一行这个文件。我试过这个,但它显示错误not able to decode
。我实际上想要从最后一次读取的指针每15分钟后读取一次json文件。
这就是我的尝试。
last_pointer = 0
with open (FILENAME) as f:
f.seek(last_pointer)
raw_data = json.load(f) // this raw_data should load json starting from the last pointer.
.....process something.........
last_position = f.tell()
答案 0 :(得分:1)
如果您的数据完全如图所示排列,您可以通过逐个读取文件中的行,修剪尾随逗号并将结果提供给json.loads
来构建临时解决方案。但也许更好的变体是使用像ijson
这样的流解析器。
答案 1 :(得分:0)
import json
import time
with open ('dat') as f:
line = f.readline()
while line:
try:
raw_data = json.loads(line.strip().strip(','))
print (raw_data)
time.sleep(15*60)
except ValueError:
pass
line = f.readline()