在pickle中保存整数并调用它们

时间:2015-12-11 09:31:28

标签: python

所以这是我的代码,我想保存价值'测试'到文件,以便可以在重新打开程序时调用它。

import pickle
test = 0

def Save():
     with open('objs.pickle', 'wb') as f:
         pickle.dump(test, f)

def Load():
    with open('objs.pickle', 'rb') as f:
        test = pickle.load(f)

这段代码的问题在于,当我重新打开程序并运行然后键入Load()时,它会说“测试”#39;仍然等于0.(可能很遗憾)

所以我的问题是,如何解决以斜体显示的问题?

1 个答案:

答案 0 :(得分:5)

全局变量test与函数test中的Load()无关。将您的功能更改为:

def Load():
    with open('objs.pickle', 'rb') as f:
        return pickle.load(f)

现在这个函数返回它从pickle文件中读取的值。

这样称呼:

print(Load())

旁注:按照惯例,函数名称在Python中都是小写的。所以函数名实际上应该是load()

修改

整个节目的风格更好:

import pickle

def save(file_name, obj):
    with open(file_name, 'wb') as fobj:
        pickle.dump(obj, fobj)

def load(file_name):
    with open(file_name, 'rb') as fobj:
        return pickle.load(fobj)

def main():
    test = 0
    file_name = 'objs.pickle'
    save(file_name, test)
    print(load(file_name))

if __name__ == '__main__':
    main()