重新运行程序后,如何保存保存的数据并重复使用?

时间:2019-06-23 18:27:09

标签: python save dataset storage

我使用以下代码获取股票价格数据:

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

2 个答案:

答案 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