从通过pickle保存和加载的元组中获取整数
在Python中,我做了一个模块,用来保存和加载整数。它能按照我想要的方式保存数据(我使用的是Pickle),但是当我加载数据时,我得到的是元组形式的整数(因为我保存时用了元组)。我想把这个元组里的元素分配给我程序中的整数,但这不太顺利,请帮帮我!这是我的代码:
def save(ob1,ob2,ob3,ob4,ob5):
import pickle
tmp = ob1,ob2,ob3,ob4,ob5
output = open('save.sav','w')
pickle.dump(tmp,output)
output.close()
def load(ob1,ob2,ob3,ob4,ob5):
import pickle
input2 = open('save.sav','r')
pickleload = pickle.load(input2)
ob1 = pickleload[0]
ob2 = pickleload[1]
ob3 = pickleload[2]
ob4 = pickleload[3]
ob5 = pickleload[4]
我试着按照aix说的去做,但没有成功。我可能把他的代码放错地方了,或者其他什么原因。aix,你能不能再解释得清楚一点,或者把我的代码编辑一下再发过来?或者其他人能帮帮我吗?
2 个回答
0
下面这段Python代码应该对你有帮助。变量ob1到ob5的值是通过运行pickle.load(open('save.sav', 'r'))
得到的。因为这些变量被声明为全局变量,所以你可以在def load():
这个函数外部访问它们。
import pickle
def load():
global ob1, ob2, ob3, ob4, ob5
ob1, ob2, ob3, ob4, ob5 = pickle.load(open('save.sav', 'r'))
1
把load()
改成这样:
def load():
import pickle
input2 = open('save.sav','r')
return pickle.load(input2)
然后可以这样使用:
ob1, ob2, ob3, ob4, ob5 = load()
你最开始的版本不管用,是因为当你在函数里面写ob1 = ...
时,这个变化不会传递给调用这个函数的地方。当函数返回时,ob1
是一个不可变的对象,它是通过引用传递的;给它赋值其实是重新绑定了这个引用,但新的引用不会传回给调用者。