如何莳萝(泡菜)归档?

时间:2017-02-10 20:47:20

标签: python dill

这个问题可能看起来有点基础,但无法找到我在互联网上理解的任何内容。如何储存我用莳萝腌制的东西?

我已经为保存我的构造(pandas DataFrame,它还包含自定义类)而走了这么远:

import dill
dill_file = open("data/2017-02-10_21:43_resultstatsDF", "wb")
dill_file.write(dill.dumps(resultstatsDF))
dill_file.close()

和阅读

dill_file = open("data/2017-02-10_21:43_resultstatsDF", "rb")
resultstatsDF_out = dill.load(dill_file.read())
dill_file.close()

但我在阅读时收到错误

TypeError: file must have 'read' and 'readline' attributes

我该怎么做?

1 个答案:

答案 0 :(得分:10)

只需在没有idea的情况下提供文件:

read

您也可以像这样提交文件:

resultstatsDF_out = dill.load(dill_file)

所以:

with open("data/2017-02-10_21:43_resultstatsDF", "wb") as dill_file:
    dill.dump(resultstatsDF, dill_file)

直接写入文件。鉴于:

dill.dump(obj, open_file)

序列化dill.dumps(obj) ,你可以自己编写文件。

同样地:

obj

从文件中读取,并且:

dill.load(open_file)

构造一个对象,形成一个序列化对象,您可以从文件中读取该对象。

建议使用dill.loads(serialized_obj) 语句打开文件。

下面:

with

具有与以下相同的效果:

with open(path) as fobj:
    # do somdthing with fobj

即使出现异常,该文件也会在您离开fobj = open(path) try: # do somdthing with fobj finally: fobj.close() 语句的缩进后立即关闭。