pickle 相关问题

Python的对象序列化模块。将此标记与Python标记一起用于与使用Pickle存储或加载对象相关的问题。

更新 scikit 模型,使其与最新版本兼容

我有一个关于 scikit 模型和(复古)兼容性的问题。 我有一个从 scikit-learn 0.21.2 在 Python 3.5 中创建的模型(使用 joblib 保存),然后我使用 shap versi 包进行分析...

回答 2 投票 0

无法在anaconda中安装pickle5

收集泡菜5 使用缓存的pickle5-0.0.11.tar.gz (132 kB) 准备元数据(setup.py)...完成 为收集的包构建轮子:pickle5 pickle5 的构建轮子(setup.py)......

回答 1 投票 0

_pickle.PicklingError:无法腌制<class '__main___.{CONST} '>:属性查找失败dir_namesmain_on __main__失败

首先 dir_names 在酸洗时效果很好 dir_names = collections.namedtuple('dir_names', ['标记', '类别']) pickle.dump(dir_names, open('tmp.bin', 'wb')) 我想让 dir_name 成为 const DIR_NAME...

回答 1 投票 0

Numpy 数组大于等效列表

我无法弄清楚为什么保存的 10000 X 10000 X 7 大小的 Numpy 数组(dtype=np.float16)为 1.4GB,而等效的 pickled Python 列表大约为 500mb。我希望 Python

回答 1 投票 0

Depickle 文件显示其中没有任何内容

`我输入了以下代码来生成一个pickle文件,该文件是在运行代码后自行创建的,但在对文件进行depickle之后,所有数据都是“无”,而不是获取...的名称

回答 1 投票 0

无法解封文件 _pickle.UnpicklingError:遇到加载持久 id 指令,但未指定 permanent_load 函数

我正在处理生物信息学程序的数据(https://github.com/twopin/CAMP/tree/master/CAMP_pytorch)。 我正打算解开软件作者用来解决问题的数据/代码......

回答 1 投票 0

为什么Python的defaultdict在pickle中表现得很奇怪?

我正在使用 PySpark,它使用 Python 的 pickle 来序列化对象。我的用例有一个嵌套的 defaultdict 数据结构,例如: 从集合导入defaultdict 嵌套字典 = defaultdict(lambda:

回答 2 投票 0

无法pickle本地对象'get_tokenizer。<locals>.<lambda>'

-------------------------------------------------------- ---------------------------- AttributeError Traceback(最近一次调用最后一次) d: bie\Coding\Tugas Akhir brow\VisualGPT-main\

回答 1 投票 0

为 Jupyter Notebook 实现并行评估队列

我想在 Jupyter 笔记本中并行执行长时间运行的函数,而不阻塞笔记本本身。不过,我也想随时将完全不相关的作业添加到队列中,...

回答 1 投票 0

无法取消继承自“time”的类的实例

考虑以下类,它继承自 datetime.time: 类 TimeWithAddSub(时间): _date_base = 日期(2000, 1, 1) def __new__(cls, 小时=0, 分钟=0, 秒=0, 微秒=0, tzinf...

回答 1 投票 0

无法腌制对象:超出最大递归深度

我正在尝试腌制在脚本中生成的对象以便随后处理它们,但出现此错误: 文件“”,第 1 行,位于 泡菜.转储(

回答 2 投票 0

UnpicklingError:遇到加载持久id指令,但未指定perpetitive_load函数

我试图运行一个名为 api.py 的 python 文件。在此文件中,我加载使用 PyTorch 构建和训练的深度学习模型的 pickle 文件。 api.py 在 api.py 中,下面给出的函数...

回答 1 投票 0

耐用功能的传输格式

我正在尝试使用Durable Functions按功能实现数据分析。 当通过函数实现时,我需要传输数据帧等,所以我尝试通过使其pickle来交换数据。

回答 1 投票 0

pickle 无法加载数据:TypeError: _unpickle_timestamp() 恰好需要 3 个位置参数(给定 4 个)

我有一个数据集,存储在 pandas 数据框中,我在一个环境中构建并腌制了该数据集。 pickle 文件在该环境(环境 1)中加载良好。但是,当我尝试将其加载到

回答 1 投票 0

即使我正在遵循示例问题,我仍然收到“ValueError:值的长度(1)与索引的长度(11)不匹配”

我正在尝试将 pymoo 优化算法与回归模型结合起来。我在 github 上发现了这个很棒的示例,并尝试遵循从 In[16] 开始的步骤。 示例 p...

回答 1 投票 0

如何在不将字典加载到内存的情况下写入Python字典?

我有一个大表,我想将其转换为Python字典,但我不想将所有数据加载到内存中。 是否可以在不构建对象的情况下主动写入pickle转储

回答 1 投票 0

Pickle 编码 utf-8 问题

我正在尝试将 pandas 数据框腌制到本地目录,以便我可以在另一个 jupyter 笔记本中处理它。写入一开始似乎成功,但当尝试在新的 jupyter 中读取它时

回答 2 投票 0

循环从Python pickle文件加载数据?

在一个小型数据采集项目中,我们使用Python的pickle来存储记录的数据,即对于每个“事件”,我们将其添加到输出文件f中 pkl.dump(事件, f, pkl.HIGHEST_PROTOCOL) ...

回答 1 投票 0

如何正确pickle一个namedtuple实例

我正在学习如何使用pickle。我创建了一个命名元组对象,将其附加到一个列表中,并尝试腌制该列表。但是,我收到以下错误: pickle.PicklingError:无法腌制 我正在学习如何使用pickle。我创建了一个命名元组对象,将其附加到一个列表中,并尝试腌制该列表。但是,我收到以下错误: pickle.PicklingError: Can't pickle <class '__main__.P'>: it's not found as __main__.P 我发现如果我运行代码而不将其包装在函数中,它会完美运行。包装在函数内时是否需要额外的步骤来腌制对象? 这是我的代码: from collections import namedtuple import pickle def pickle_test(): P = namedtuple("P", "one two three four") my_list = [] abe = P("abraham", "lincoln", "vampire", "hunter") my_list.append(abe) with open('abe.pickle', 'wb') as f: pickle.dump(abe, f) pickle_test() 创建函数的命名元组outside: from collections import namedtuple import pickle P = namedtuple("P", "one two three four") def pickle_test(): my_list = [] abe = P("abraham", "lincoln", "vampire", "hunter") my_list.append(abe) with open('abe.pickle', 'wb') as f: pickle.dump(abe, f) pickle_test() 现在pickle可以找到它;它现在是一个全局模块。当 unpickle 时,pickle 模块所要做的就是再次定位 __main__.P。在您的版本中, P 是 pickle_test() 函数的 local,并且不可内省或不可导入。 请注意,pickle仅存储模块和类名称,取自类的__name__属性。确保 namedtuple() 调用的第一个参数与您要分配给的全局变量匹配; P.__name__一定是"P"! 重要的是要记住,namedtuple()是一个类工厂;你给它参数,它返回一个类对象供你创建实例。 pickle仅存储实例中包含的data,加上对原始类的字符串引用以再次重建实例。 我在另一个线程中找到了这个答案。 为了让 pickling 正常工作,分配给namedtuple的变量必须与namedtuple本身具有相同的名称 group_t = namedtuple('group_t', 'field1, field2') # this will work mismatched_group_t = namedtuple('group_t', 'field1, field2') # this will throw the error 将我的问题添加为主要答案的评论后,我找到了一种方法来解决动态创建的 namedtuple 可腌制的问题。在我的情况下这是必需的,因为我仅在运行时(在数据库查询之后)计算出其字段。 我所做的就是 monkey patch namedtuple,有效地将其移动到 __main__ 模块: def _CreateNamedOnMain(*args): import __main__ namedtupleClass = collections.namedtuple(*args) setattr(__main__, namedtupleClass.__name__, namedtupleClass) namedtupleClass.__module__ = "__main__" return namedtupleClass 请注意,如果您不小心,namedtuple名称(由args提供)可能会覆盖__main__中的另一个成员。 或者,您可以使用 cloudpickle 或 dill 进行序列化: from collections import namedtuple import cloudpickle import dill def dill_test(dynamic_names): P = namedtuple('P', dynamic_names) my_list = [] abe = P("abraham", "lincoln", "vampire", "hunter") my_list.append(abe) with open('deleteme.cloudpickle', 'wb') as f: cloudpickle.dump(abe, f) with open('deleteme.dill', 'wb') as f: dill.dump(abe, f) dill_test("one two three four") 这里的问题是子进程无法导入对象的类 - 在本例中为类 P -,在多模型项目的情况下,类 P 应该可以在使用子进程的任何地方导入 一个快速的解决方法是通过影响 globals() 来使其可导入 globals()["P"] = P

回答 5 投票 0

为什么我在读取空文件时会收到“Pickle - EOFError: Ran out of input”?

我在尝试使用 Unpickler.load() 时遇到一个有趣的错误,这里是源代码: 打开(目标,'a').close() 分数={}; 以 open(target, "rb") 作为文件: unpickler = pickle.Unpi...

回答 13 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.