【问题标题】:Python pickle module usagePython pickle 模块用法
【发布时间】:2021-08-06 18:58:11
【问题描述】:
import pickle

data_list = list()

def Add(x):
    data_list.append(x)
    with open("data.pkl", "wb") as f:
        pickle.dump(data_list, f, pickle.HIGHEST_PROTOCOL)

while 1:
    abc = input("--->")
    if abc == "data":
        with open("data.pkl", "rb") as f:
            print(pickle.load(f))
    else:  
        Add(abc)
        print(data_list)
        

我用 pickle 模块保存了我的列表。 重新启动程序后,如果我不添加新数据查询列表内容,我可以看到记录,但如果我添加新数据,我看不到旧记录。为什么我看不到旧记录?

【问题讨论】:

    标签: python pickle


    【解决方案1】:

    这是因为您以空列表启动程序。如果在启动时存在,您应该添加一个同步数据库的功能

    import os
    import pickle
    
    # Sync database
    if os.path.exists('data.pkl'):
        with open("data.pkl", "rb") as f:
            data_list = pickle.load(f)
    else:
        data_list = list()
    
    def Add(x):
        data_list.append(x)
        with open("data.pkl", "wb") as f:
            pickle.dump(data_list, f, pickle.HIGHEST_PROTOCOL)
    
    while 1:
        abc = input("--->")
        if abc == "data":
            with open("data.pkl", "rb") as f:
                print(pickle.load(f))
        else:  
            Add(abc)
            print(data_list)
    

    【讨论】:

    • 如果我要腌制类属性,我该如何使用它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2011-06-02
    相关资源
    最近更新 更多