2017-10-20 55 views
0

我在json文件中編寫字典,並且創建了一個讀取json並將其發送到html文件的函數。我的問題是,它實際上並沒有寫字典。我真的需要幫助,因爲經過大量的思考和搜索,我找不到我做錯了什麼。使用python 2.x讀取和寫入JSON文件

我正在一個文件中的字典稱爲查詢

dict_scan_data = scan_data.to_dict(orient='records') 

    data_load ={} 
    data_load['noscan'] = dict_scan_data 

    return json.dumps(data_load) 


def updateJsonFiles(): 
    f = open('../site/json/data.json', 'w') 
    f.write(calcProductionAsJSON()) 
    f.close() 

# updateJsonFiles() 

我所做的讀取功能是這樣的:

import json 
from queries import calcProductionAsJSON 

def GetProductionTotals(): 
    """ 
    Return the production data as json 
    """ 
    f = open('../site/json/data.json', 'r') 
    data = f.read() 
    f.close() 
    return json.dumps(data) 


def GetProductionTotalsLive(): 
    """ 
    Return the production data as json 
    """ 
    return calcProductionAsJSON() 

而在HTML:

<tr ng-repeat="item in data"> 
       <td>{{ item.Masina }}</td> 
       <td>{{ item.Productie }}</td> 
       <td>{{ item.Scanned }}</td> 
       <td>{{ item.Delta }}</td> 
       </tr> 

我非常新的python,所以很抱歉,如果這個問題看起來容易或愚蠢

+0

你能解釋一下你究竟在做什麼? – ZdaR

+0

是的,這是一個查詢巫婆字典,每2分鐘更新一次。我想要更新json文件,以便我可以每次顯示html中的最新結果 – Christian

回答

1

我覺得在GetProductionTotals( ),它應該返回json.loads(data)而不是json.dumps(data),因爲json.dumps返回一個字符串,而json.loads從傳遞給它的字符串返回json。

+0

是的,你是對的。我只是用json.loads(數據)修改,它仍然不會更新json文件。可能我仍然在做錯誤 – Christian

+0

「它仍然不會更新json文件」,有些東西會被寫入文件中嗎?你能粘貼正在寫入的內容嗎? – rajkris

+0

它不會在Json文件中寫任何東西。這就是我認爲我在編寫它的過程中搞砸了一些東西的原因 – Christian

1

json.dumps make python字符串(JSON)
json。 負載負載串(JSON)與dict

示例(Python 2.7.6)

>>> import json 
>>> d = {'a': 'foobar'} 
>>> json_from_d = json.dumps(d) 
>>> json_from_d 
'{"a": "foobar"}' 
>>> 
>>> new_d_from_json = json.loads(json_from_d) 
>>> new_d_from_json 
{u'a': u'foobar'} 

所以在GetProductionTotals你應該調用json.loads(數據)

+0

謝謝,您絕對正確,這是我的一個錯誤。我修改了它,但它仍然不起作用。我覺得很愚蠢:) – Christian