首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在python中保存和恢复多个变量?

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

Stack Overflow用户
提问于 2011-07-04 14:24:59
回答 6查看 221.8K关注 0票数 122

我需要将大约12个对象保存到一个文件中,然后在稍后恢复它们。我试着使用for循环和酸菜和搁板,但它不能正常工作。

编辑。

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

代码语言:javascript
复制
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'
EN

回答 6

Stack Overflow用户

发布于 2011-07-04 16:08:37

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

代码语言:javascript
复制
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将使用最佳可用协议,而不是默认的历史协议(以及更向后兼容的协议)。在这种情况下,必须以二进制模式(分别为wbrb )打开文件。

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

票数 193
EN

Stack Overflow用户

发布于 2011-07-04 15:26:54

有一个名为pickle的内置库。使用pickle,您可以将对象转储到文件中,并在以后加载它们。

代码语言:javascript
复制
import pickle

f = open('store.pckl', 'wb')
pickle.dump(obj, f)
f.close()

f = open('store.pckl', 'rb')
obj = pickle.load(f)
f.close()
票数 54
EN

Stack Overflow用户

发布于 2011-07-04 14:28:00

您应该看看shelvepickle模块。如果需要存储大量数据,最好使用数据库

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6568007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档