2013-09-24 38 views
1

我有,其內容爲如下JSON文件: -如何閱讀python中的skippinf幾行之後的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() 

回答

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()  
1

如果您的數據被安排在線完全一樣所示,可以通過由一個從所述文件中的一個讀取行,修整尾隨逗號,並將結果饋送到json.loads構造的ad-hoc方案。但也許更好的變體是使用像ijson這樣的流式解析器。

+0

我的json文件的結構將會像這樣,但根據我的邏輯,我需要一次解析來自json文件的'x'行數和'y'行數其他時間。我該怎麼做?你能提供一個例子嗎? – PythonEnthusiast

+0

閱讀關於'ijson'。無法看到它在這個問題中的任何使用。 – PythonEnthusiast

+0

「我需要一次解析json文件中的x行,y是其他時候的行數」 - 這正是「ijson」在後臺執行的操作。它不會立即讀取整個文件/流。這個例子就在文檔的開頭。 – fjarri