如何在Python中保存和恢复多个变量?

2023-11-26

我需要将大约十几个对象保存到一个文件中,然后稍后恢复它们。 我尝试将 for 循环与 pickle 和 shelve 一起使用,但效果不佳。

Edit.
我试图保存的所有对象都在同一个类中(我应该之前提到过这一点),并且我没有意识到我可以像这样保存整个类:

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'

如果您需要保存多个对象,您可以简单地将它们放入单个列表或元组中,例如:

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 to dump(); pickle然后将使用最佳可用协议而不是默认的历史协议(并且向后兼容)。在这种情况下,文件必须以二进制模式打开(wb and rb, 分别)。

二进制模式也应该与 Python 3 一起使用,因为它的默认协议生成二进制(即非文本)数据(写入模式'wb'和阅读模式'rb').

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中保存和恢复多个变量? 的相关文章

随机推荐