这个问题可能看起来有点基础,但无法找到我在互联网上理解的任何内容.如何储存我用莳萝腌制的东西?
我来这里是为了保存我的构造(pandas DataFrame,它也包含自定义类):
import dill
dill_file = open("data/2017-02-10_21:43_resultstatsDF", "wb")
dill_file.write(dill.dumps(resultstatsDF))
dill_file.close()
Run Code Online (Sandbox Code Playgroud)
和阅读
dill_file = open("data/2017-02-10_21:43_resultstatsDF", "rb")
resultstatsDF_out = dill.load(dill_file.read())
dill_file.close()
Run Code Online (Sandbox Code Playgroud)
但我在阅读时得到了错误
TypeError: file must have 'read' and 'readline' attributes
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
Mik*_*ler 12
只要给它文件没有read:
resultstatsDF_out = dill.load(dill_file)
Run Code Online (Sandbox Code Playgroud)
你也可以像这样提交文件:
with open("data/2017-02-10_21:43_resultstatsDF", "wb") as dill_file:
dill.dump(resultstatsDF, dill_file)
Run Code Online (Sandbox Code Playgroud)
所以:
dill.dump(obj, open_file)
Run Code Online (Sandbox Code Playgroud)
直接写入文件.鉴于:
dill.dumps(obj)
Run Code Online (Sandbox Code Playgroud)
序列化obj,您可以自己编写文件.
同样:
dill.load(open_file)
Run Code Online (Sandbox Code Playgroud)
从文件中读取,并:
dill.loads(serialized_obj)
Run Code Online (Sandbox Code Playgroud)
构造一个对象形成一个序列化对象,您可以从文件中读取该对象.
建议使用该with语句打开文件.
这里:
with open(path) as fobj:
# do somdthing with fobj
Run Code Online (Sandbox Code Playgroud)
具有与以下相同的效果:
fobj = open(path)
try:
# do somdthing with fobj
finally:
fobj.close()
Run Code Online (Sandbox Code Playgroud)
一旦您离开with语句的缩进,该文件将立即关闭,即使在例外情况下也是如此.
| 归档时间: |
|
| 查看次数: |
9364 次 |
| 最近记录: |