1

次のような内容の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"},
]

今、私はこのファイルを一度に1行ずつ読みたいと思っています.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()
4

2 に答える 2

1

データが示されているとおりに行に配置されている場合は、ファイルから行を 1 行ずつ読み取り、末尾のコンマをトリミングし、結果をjson.loads. しかし、より良い方法は、 のようなストリーミング パーサーを使用することijsonです。

于 2013-09-24T13:07:04.680 に答える
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()      
于 2013-09-24T13:27:17.130 に答える