pickling 和 unpickling 用户定义的类

2023-12-07

我有一个用户定义的类“myclass”,我将其存储在文件中pickle模块,但我在解封它时遇到问题。我有大约 20 个相同结构的不同实例,我将它们保存在不同的文件中。当我读取每个文件时,代码适用于某些文件,而不适用于其他文件,当我收到错误时:

'module' object has no attribute 'myclass'

我今天生成了一些文件,昨天生成了一些文件,我的代码仅适用于今天生成的文件(我在昨天和今天之间没有更改类定义)。

我想知道我的方法是否不健壮,如果我没有做我应该做的事情,例如我可能无法腌制用户定义的类,以及这是否在过程中引入了一些随机性。

另一个问题可能是我昨天生成的文件是在不同的机器上生成的 -- 因为我在学术集群上工作,所以我有一些登录节点和一些计算节点,它们因架构而异。所以我在计算节点上生成了昨天的文件,在登录节点上生成了今天的文件,并且我正在读取登录节点上的所有内容。


根据一些评论的建议,我已经安装了dill并加载它import dill as pickle。现在我可以从同一个集群的计算节点到登录节点读取文件了。但是,如果我尝试读取一个集群的计算节点上生成的文件,则无法在另一个集群的登录节点上读取。我明白了KeyError: 'ClassType'在 dill.py 的 _load_type(name) 中

难道是因为python版本不同?我已经用 python2.7 生成了文件,并用 python3.3 读取了它们。


EDIT:

如果我到处使用 python 2.7,我可以读取 pickled 文件。遗憾的是,我的部分代码是用 python 3 编写的,并不自动与 python 2.7 兼容:(


Can you from mymodule import myclass? Pickling 不会对类进行 pickle,而只是对其进行引用。要加载 pickled 对象,python 必须能够找到用于创建该对象的类。

eg.

import pickle

class A(object):
    pass

obj = A()
pickled = pickle.dumps(obj)

_A = A; del A # hide class

try:
    pickle.loads(pickled)
except AttributeError as e:
    print(e)

A = _A # unhide class
print(pickle.loads(pickled))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pickling 和 unpickling 用户定义的类 的相关文章

随机推荐

  • 不在 gridview 中显示日期时间最小值

    given public class Customer public int Id get set public string FirstName get set public DateTime Birthdate get set 我有一个
  • 使用reducebykey时出错:int对象不可订阅

    我收到错误 int 对象不可订阅 执行以下脚本时 element reduceByKey lambda x y x 1 y 1 with element 是一个键值 RDD value 是一个元组 输入示例 A toto 10 A titi
  • 如何为 iPhone 设置视口元以正确处理旋转?

    所以我一直在使用 让我的 HTML 内容在 iPhone 上完美显示 它工作得很好 直到用户 将设备旋转到横向模式 其中显示仍限制为 320 像素 有没有一种简单的方法来指定一个视口 该视口会随着用户更改而变化 设备方向 或者我必须求助于
  • 对于终端应用程序来说,什么是好的 Java 类诅咒库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想编写一个进行屏幕操作的 Java 终端应用程序 是否有任何好的库可以让您像 nix C 世界中的诅咒一样操作屏幕 我正在寻找的最小功能是窗口和用
  • 对多个任意过滤条件使用 tidy eval

    我想用整齐的评价编写多个完全灵活的过滤条件 一个相关但不太复杂的问题已解决在这个 Stackoverflow 问题中 以下代码 改编自上述其他问题 正在运行 它将两个过滤条件应用于gapminder数据集 并返回过滤后的数据 library
  • GAE 通过 app.yaml、python 装饰器或 users.get_current_user 强制登录?

    我在 GAE 应用程序的 app yaml 配置文件中使用 登录 选项 看起来像这样 url admin script myapp app login admin url script myapp app login required 更新
  • Pandas 用最后一个已知值填充空尾随值

    我有几个具有不同结束时间段的专栏 需要用最后一个已知值填充空数据 有没有一种 Pandas 方法可以做到这一点 而无需在结束日期上循环 我需要过去 4 个月的 Gain sum y 等于 57129 0 gain sum x gain su
  • JSF - @PostConstruct 可以使用 ajax 调用来阻止 setter 方法吗?

    我想这个问题从标题就已经很清楚了 这是我真正的豆子 ManagedBean name selector RequestScoped public class Selector private String profilePage PostC
  • “静态只读”与“常量”

    我读过有关const and static readonly字段 我们有一些只包含常量值的类 它们用于我们系统中的各种事物 所以我想知道我的观察是否正确 这些常数值是否应该始终是static readonly对于所有公开的事情 并且只使用c
  • 将选项卡名称和 ConqueShell 与 Vim 会话一起保存

    有没有办法让 vim 保存选项卡名称 通过分配选项卡名称脚本 和 或终端仿真器 通过设置康克外壳脚本 发出后 mksession fileName 命令 观察下面 放大 我在左侧有一个工作会话 并且通过vim S fileName命令 在右
  • Spark.sql.shuffle.partitions 到底指什么?

    到底是做什么的spark sql shuffle partitions参考 我们谈论的是宽变换结果的分区数量 还是中间发生的事情 例如宽变换结果分区之前的某种中间分区 因为根据我的理解 根据广泛的转变 我们有 Parents RDDs gt
  • 无法推导出模板参数(向量、std::function)

    我创建了一个模板化函数 我试图自动推导模板参数 MCVE 编译它 template
  • 当隔离被杀死时,颤振隔离内的计时器不会停止

    我有一个应用程序使用 API 调用将操纵杆位置数据上传到网络服务器 当操纵杆移动时会调用此方法 如果操纵杆不在中心 它将停止任何先前运行的隔离并启动新的隔离 void onJoystickMoved double angle double
  • 在 FormFlows - Bot Framework 中添加另一个 Quit 关键字

    是否可以使用 Bot Framework 更改 FormDialog 中退出突击队的关键字 我想在键入某个单词时抛出 FormCanceledException 不使用英语作为语言 如果我可以更改关键字 或者添加另一个与退出相同的关键字 那
  • 安卓图像按钮

    如何创建一个没有文本且图像水平居中的按钮 我不想使用图像按钮 因为我想定义不同的背景图像 您只需使用 ImageButton 并将背景设置为您想要的任何内容并将图标设置为 src
  • Tinder 像泛 iOS

    对于 iOS 中的 Tinder 应用程序 我假设他们在图像视图上使用平移手势识别器 为什么用户开始移动的图像下方会显示另一张图像 他们是否有另一个图像视图 并且在手势识别器完成后 动态设置图像视图手势识别器 最后在下面创建另一个图像视图
  • 使用自定义名称创建 Python 动态函数

    如果这个问题已经提出并得到回答 我们深表歉意 我需要做的概念非常简单 但不幸的是我无法在网上找到答案 我需要在运行时使用自定义名称在 Python Python2 7 中创建动态函数 每个函数的主体也需要在运行时构造 但对于所有函数来说 几
  • Stripe Payment API 与 Jetpack Compose 集成

    我不明白如何将 Stripe API 集成到 Compose 应用程序中 这是 Stripe 提供的代码片段 class CheckoutActivity AppCompatActivity lateinit var paymentShee
  • 如何检测可可中的右键单击和左键单击

    我想创建一个点击鼠标右键和左键的动作 单击可能会在 NSTableViewCell NSView 等上 就像我们右键单击窗口时会弹出一个窗口 有没有API可以完成这样的任务 如果没有 还有其他办法吗 预先感谢您对我的帮助 你必须覆盖NS响应
  • pickling 和 unpickling 用户定义的类

    我有一个用户定义的类 myclass 我将其存储在文件中pickle模块 但我在解封它时遇到问题 我有大约 20 个相同结构的不同实例 我将它们保存在不同的文件中 当我读取每个文件时 代码适用于某些文件 而不适用于其他文件 当我收到错误时