我一直在開發 Telegram 機器人,為不同加油站的汽油和柴油價格提供服務。我每小時下載一個帶有更新價格的 JSON 檔案,并將它們放入像這樣的字典中:
import json
with open('output1.json', encoding='utf-8') as f:
data = json.loads(f.read())
f.close()
def rotul_2668():
return (data['ListaEESSPrecio'][37]['Rótulo'])
def direccio_2668():
return (data['ListaEESSPrecio'][37]['Dirección'])
def benzina_2668():
return (data['ListaEESSPrecio'][37]['Precio Gasolina 95 E5'])
def dieselA_2668():
return (data['ListaEESSPrecio'][37]['Precio Gasoleo A'])
def dieselB_2668():
return (data['ListaEESSPrecio'][37]['Precio Gasoleo B'])
def dieselPremium_2668():
return (data['ListaEESSPrecio'][37]['Precio Gasoleo Premium'])
def GLP_2668():
return (data['ListaEESSPrecio'][37]['Precio Gases licuados del petróleo'])
ciutadella_2668 = {
'rotul' : rotul_2668(),
'direccio' : direccio_2668(),
'benzina' : benzina_2668(),
'dieselA' : dieselA_2668(),
'dieselB' : dieselB_2668(),
'dieselPremium' : dieselPremium_2668(),
'GLP': GLP_2668()
}
然后從外部函式呼叫字典條目。到目前為止,一切都運行良好,直到需要更新字典并提供新的價格,而這從來沒有。知道為什么會這樣嗎?可能是因為存盤在 var "data" 中的資料永遠不會重新加載?如果是這樣,可能的解決方案是什么?
感謝您的時間
uj5u.com熱心網友回復:
它不會重新加載,因為您將代碼放在檔案級別。所以第一次訪問ciutadella_2668 時,所有檔案都被匯入,output1.json被讀取并填充字典。快速修復(不是最佳想法)將其放入函式中
import json
def get_ciutadella_2668():
with open('output1.json', encoding='utf-8') as f:
data = json.loads(f.read())
def rotul_2668():
return (data['ListaEESSPrecio'][37]['Rótulo'])
def direccio_2668():
return (data['ListaEESSPrecio'][37]['Dirección'])
def benzina_2668():
return (data['ListaEESSPrecio'][37]['Precio Gasolina 95 E5'])
def dieselA_2668():
return (data['ListaEESSPrecio'][37]['Precio Gasoleo A'])
def dieselB_2668():
return (data['ListaEESSPrecio'][37]['Precio Gasoleo B'])
def dieselPremium_2668():
return (data['ListaEESSPrecio'][37]['Precio Gasoleo Premium'])
def GLP_2668():
return (data['ListaEESSPrecio'][37]['Precio Gases licuados del petróleo'])
return {
'rotul' : rotul_2668(),
'direccio' : direccio_2668(),
'benzina' : benzina_2668(),
'dieselA' : dieselA_2668(),
'dieselB' : dieselB_2668(),
'dieselPremium' : dieselPremium_2668(),
'GLP': GLP_2668()
}
另一種方法是使用一些每小時運行一次的python 調度程式,而不是在讀取它時而是在獲取新檔案時更新這個特定變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/387457.html
