- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这个问题可能看起来有点基础,但无法在互联网上找到我理解的任何内容。如何储存用 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
我该怎么做?
为 future 的读者编辑:在使用这种方法(来 pickle 我的 DataFrame)一段时间后,现在我不再这样做了。事实证明,不同的程序版本(包括可能存储在 dill 文件中的对象)可能会导致无法恢复 pickled 文件。现在我确保我想要保存的所有内容都可以表示为一个字符串(尽可能高效)——实际上是一个人类可读的字符串。现在,我将数据存储为 CSV。 CSV 单元格中的对象可以用 JSON 格式表示。这样我就可以确保我的文件在未来的几个月和几年内都是可读的。即使代码发生变化,我也能够通过解析字符串来重写编码器,并且能够通过手动检查来理解 CSV。
最佳答案
只给它没有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()
一旦您离开 with
语句的缩进,文件将立即关闭,即使在出现异常的情况下也是如此。
关于python - 如何 dill ( pickle )归档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42168420/
我在 s3 中保存了两个文件(模型、矢量化器),并尝试从 s3 下载并使用我的 Flask 应用程序文件运行它。但是,当前返回 dill.dill (没有名为错误的模块)。有趣的是,我没有在任何地方导
如果我创建一个导入库的类并使用 dill 对其进行 pickle,当我对其进行 unpickle 时,我找不到该库: import dill from sklearn.metrics.cluster
我认为这对许多知道如何处理 pickle 的人来说是最基本的。但是,尝试了几个小时后,我仍然无法完全正确。我有以下代码: 在第一个文件中 import pandas as pd names = ["J
来自https://github.com/uqfoundation/dill/blob/master/dill/dill.py#L43 : from pickle import _Pickler as
在下面的示例中,我将类 Foo 放在它自己的模块 foo 中。 为什么外部类会被ref dump?实例 ff 未与其源代码一起转储。 我正在使用 Python 3.4.3 和 dill-0.2.4。
在对 Python pickle: dealing with updated class definitions 的回答中,dill 包的作者写道: “好的,我已经在 github 上的最新修订版中将
我想在 Python 中使用 multiprocessing 库。遗憾的是,multiprocessing 使用了 pickle,它不支持带有闭包的函数、lambdas 或 __main__ 中的函数
一开始,我尝试了conda install dill , 和 conda无法在互联网上找到它。 然后我下载了.tgz和 .zip我的默认 IPython 目录中的文件从这里开始: https://py
我有一个 Jupyter 笔记本,我想使用 dill.dump_session 保存其状态,但是如果笔记本使用 getpass 模块,该函数会引发错误。有什么办法可以解决这个问题吗?我理解不转储密码的
我遇到了一个让我抓狂的错误。我生成一些数值模拟数据 sim_data.dill 并使用 将其保存到我的计算机上的目录中 with open(os.path.join(original_director
dill 是一个用于 pickle 大多数 Python 对象的好工具,我在 IPython 中使用它来并行化计算。我一直在研究的一个问题是钻取类定义。下面解释了我遇到的错误之一。 在尝试序列化类定义
Dill显然是一个非常有用的模块,而且只要你小心管理文件,它似乎是相对安全的。但我被以下声明推迟了: Thus dill is not intended to be secure against er
尝试将一个大的且(可能非常)不可拾取的对象渲染到文件中以供以后使用。 dill.dump(file) 方面没有任何投诉: In [1]: import echonest.remix.audio as
使用dill序列化类时: import dill, pickle class project(object): def __init__(self, name='', folder='', u
我做了 flutter build iOS 并且我收到了这 3 个与 platform_strong.dill 文件相关的错误: Xcode's output: ↳ === BUILD TAR
这个问题可能看起来有点基础,但无法在互联网上找到我理解的任何内容。如何储存用 dill pickle 的东西? 我走到这一步是为了保存我的构造(pandas DataFrame,它也包含自定义类):
我正在尝试序列化数千个对象,其中一些对象是 lambda 对象。 由于 cPickle 不适用于 lambda,我尝试使用 dill。然而,在 unpickleing(或 undilling(?))时
我想开始使用 jupyter lab 而不是 spyder,但我遇到了问题。我无法将变量保存在我的工作区中。 我正在尝试使用 jupyter lab 来运行这样的代码: import dill imp
我正在使用 PyMemoize 库来缓存协程。我装饰了协程,但是当 Python 调用它时,我得到: TypeError: can't pickle coroutine objects 发生这种情况是
我想将 poll 类数据的状态保存到文件中,如果我的脚本重新启动,则将其加载回来。我弹出了部分程序来重现该问题。这是我的文件。 pickleclass.py #POLL RECORD class PO
我是一名优秀的程序员,十分优秀!