所以这是我的代码,我想保存价值'测试'到文件,以便可以在重新打开程序时调用它。
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.(可能很遗憾)
所以我的问题是,如何解决以斜体显示的问题?
答案 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()