这个问题可能看起来有点基础,但我在互联网上找不到任何我能理解的东西。我如何存储使用dill模块pickle的对象?
我已经尝试了以下代码用于保存我的构造(一个包含自定义类的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
我该如何做这件事?
编辑供未来读者参考: 在使用这种方法(将我的DataFrame进行pickle)一段时间后,我现在不再这样做。事实证明,不同的程序版本(包括可能存储在dill文件中的对象)可能导致无法恢复已经pickled的文件。现在我确保我想保存的所有内容都可以表示为一个字符串(尽可能高效地),实际上是一个可读的字符串。现在,我将我的数据存储为CSV格式。CSV单元格中的对象可以由JSON格式表示。这样,我就确保我的文件在未来的几个月和几年中都能被读取。即使代码发生改变,我也能够通过解析字符串重新编写编码器,并且通过手动检查CSV来理解它。