繁体   English   中英

通过pickle存储和调用程序文件数据

[英]Storing and calling program file data via pickle

我正在尝试通过 pickle 将我的数据保存到文件中。 每当我运行我的程序时,数据似乎永远不会加载到“thelist”。

import pickle

thelist = []

thelist.append(input('Input: '))

def save_data():
    with open('thelist.data', 'wb') as filehandle:
        pickle.dump(thelist, filehandle)
        print('Data saved.')

def load_prev_data():
    try:
        with open('thelist.data', 'rb') as filehandle:
            thelist = pickle.load(filehandle)
    except FileNotFoundError:
        print('No data found. Starting new session.')

load_prev_data()
save_data()

print(thelist)

我还没有尝试过 JSON,但我想知道这是否可行。 我知道答案可能正盯着我看,但我希望有人能提供帮助。 如果有人能指出我正确的方向,将不胜感激。 谢谢你。

您创建局部变量thelist ,您应该使用return将其发送到 function 之外

def load_data():
    try:
        with open('thelist.data', 'rb') as filehandle:
            data = pickle.load(filehandle)
    except FileNotFoundError:
        print('No data found. Starting new session.')
        data = []

    return data

thelist = load_data()

类似的方式,您可以在保存时将列表作为参数

def save_data(data):
    with open('thelist.data', 'wb') as filehandle:
        pickle.dump(data, filehandle)
        print('Data saved.')

save_data(thelist)

完整代码:

import pickle

# --- functions ---

def load_data():
    try:
        with open('thelist.data', 'rb') as filehandle:
            data = pickle.load(filehandle)
    except FileNotFoundError:
        print('No data found. Starting new session.')
        data = []

    return data

def save_data(data):
    with open('thelist.data', 'wb') as filehandle:
        pickle.dump(data, filehandle)
        print('Data saved.')

# --- main ---

thelist = load_data()

thelist.append(input('Input: '))

print(thelist)

save_data(thelist)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM