Python 在pickle中保存整数并调用它们
这是我的代码,我想将值“test”保存到文件中,以便在程序重新打开时调用它Python 在pickle中保存整数并调用它们,python,Python,这是我的代码,我想将值“test”保存到文件中,以便在程序重新打开时调用它 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) 这段代码的问题是,当我重新打开程序并在
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()时,它表示“test”仍然等于0。(可能遗漏了一些明显的信息)
因此,我的问题是,如何解决以斜体字发布的问题?全局变量
test
与函数Load()中的test
无关。将您的功能更改为:
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()
您正在保存一个0
,因此实际上加载时会得到一个0
。对不起,我忘了提到我将空闲状态下的“测试”更改为不同的值,并且在重新启动后它始终返回0。或者,使用原始的load
,但是在顶部添加global test
。@ShadowRanger Noglobal
请。使用返回值。@MikeMüller:如果Save
正在使用全局值,Load
也应该用于对称性。一般来说,不认可这种设计,而是修复其中一种而不是另一种是愚蠢的。@ShadowRanger将Save()
更改为Save(test)
怎么样?“听起来好多了!”暗影游侠为整个程序添加了一个更好的版本。