我需要将大约12个对象保存到一个文件中,然后在稍后恢复它们。我试着使用for循环和酸菜和搁板,但它不能正常工作。
编辑。
我试图保存的所有对象都在同一个类中(我之前应该提到这一点),我没有意识到我可以像这样保存整个类:
import pickle
def saveLoad(opt):
global calc
if opt == "save":
f = file(filename, 'wb')
pickle.dump(calc, f, 2)
f.close
print 'data saved'
elif opt == "load":
f = file(filename, 'rb')
calc = pickle.load(f)
else:
print 'Invalid saveLoad option'
发布于 2011-07-04 16:08:37
如果需要保存多个对象,可以简单地将它们放在单个列表或元组中,例如:
import pickle
# obj0, obj1, obj2 are created here...
# Saving the objects:
with open('objs.pkl', 'w') as f: # Python 3: open(..., 'wb')
pickle.dump([obj0, obj1, obj2], f)
# Getting back the objects:
with open('objs.pkl') as f: # Python 3: open(..., 'rb')
obj0, obj1, obj2 = pickle.load(f)
如果您有大量数据,可以通过将protocol=-1
传递给dump()
来减小文件大小;然后,pickle
将使用最佳可用协议,而不是默认的历史协议(以及更向后兼容的协议)。在这种情况下,必须以二进制模式(分别为wb
和rb
)打开文件。
二进制模式也应该与Python3一起使用,因为它的默认协议生成二进制(即非文本)数据(写入模式'wb'
和读取模式'rb'
)。
发布于 2011-07-04 15:26:54
https://stackoverflow.com/questions/6568007
复制相似问题