如何在python中skippinf几行之后读取json文件?

时间:2013-09-24 12:53:02

标签: python json

我有一个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中使用seektell方法一次读取一行这个文件。我试过这个,但它显示错误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()

2 个答案:

答案 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()