我使用以下代码获取股票价格数据:
for i in range(25200):
time.sleep(1)
with requests.Session() as s:
data = {'ContractCode' : 'SAFMO98' }
r = s.post('http://cdn.ime.co.ir/Services/Fut_Live_Loc_Service.asmx/GetContractInfo', json = data ).json()
for key, value in r.items():
plt.clf()
last_prices = (r[key]['LastTradedPrice'])
z.append(last_prices)
plt.figure(1)
plt.plot(z)
有时我的程序断开连接或停止。然后,我必须重新运行该程序,然后释放所有数据,然后程序从头开始。我正在寻找一种方法来保存数据并在重新运行程序后重新使用它。怎么可能?
我应该在代码中添加些什么?
编辑:我按如下方式编辑了代码,但两种方法都不适合我
:try:
with open('3_tir.pickle', 'rb') as f:
last_prices = pickle.load(f)
print("pickle loaded")
#f = open("last_prices.txt", 'a+')
#f.read()
except Exception:
#f = open("last_prices.txt", 'a+')
pass
for i in range(25200):
time.sleep(1)
with requests.Session() as s:
data = {'ContractCode' : 'SAFMO98' }
r = s.post('http://cdn.ime.co.ir/Services/Fut_Live_Loc_Service.asmx/GetContractInfo', json = data ).json()
for key, value in r.items():
plt.clf()
last_prices = (r[key]['LastTradedPrice'])
z.append(last_prices)
plt.figure(1)
plt.plot(z)
with open('3_tir.pickle', 'wb') as f:
pickle.dump(last_prices, f)
# f.write(last_prices)
# f.close()
答案 0 :(得分:2)
您可以将数据写入文件:
f = open("file.txt", 'w+')
f.write(last_prices)
# write your program here
f.close()
或附加:
f = open("file.txt", 'a+')
f.write(last_prices)
# write your program here
f.close()
然后您可以从该文件中读取
。f = open("file.txt")
您可以通过.read()方法访问整个文本,也可以通过.readlines()方法逐行获取文本。
f.read()
# It returns the whole text in one string
f.readlines()
# It returns a list of the file's lines
More information about reading and writing to a file. 如果您可以将数据添加到数据库表之类的东西,那么也可以使用CSV Files保存数据。 You can use CSV Library。
编辑:我不知道您要做什么,但是显然您没有加载文件。我可以看到您是从“ 3_tir.pickle”加载的,但您从未使用过它!您将文件加载到“ last_prices”变量中,然后在20行后重新分配(再次定义该变量)该文件。因此,我建议您先阅读this article,然后再阅读this,然后才能更好地编写程序。
答案 1 :(得分:1)
您可以使用pickle来存储列表,元组,类等对象,以便在程序重新启动时将其归档并加载回内存中。它的工作方式类似于json
库。
使用pickle.dump()
保存对象,使用pickle.load()
将其加载回内存。
演示:保存到腌制文件中
import pickle
a_list = [2,3,4,5]
with open('pickled_list.pickle', 'wb') as f:
pickle.dump(a_list, f)
演示:从PICKLE文件中加载
import pickle
with open('pickled_list.pickle', 'rb') as f:
list_from_pickle = pickle.load(f)
print(list_from_pickle)
输出:
[2,3,4,5]
从Python Software Foundation访问此页面,以阅读更多有关可腌制的食品以及可以做的事情的更多信息:https://docs.python.org/3/library/pickle.html