每小时从JSON文件更新一次python字典



我一直在开发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";数据";永远不会重新加载?如果是这样的话,可能的解决方案是什么?

感谢您抽出时间

它不会重新加载,因为您将代码放在文件级。因此,第一次访问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调度程序,并不是在读取特定变量时更新它,而是在获取新文件时更新它。

最新更新