【发布时间】:2020-12-05 08:57:28
【问题描述】:
假设我有一个 pickle 转储 - 作为一个文件或只是作为一个字符串 - 我如何确定用于自动创建 pickle 转储的协议?
如果是这样,我是否需要阅读整个转储以找出协议,或者这可以在 O(1) 中实现吗?通过 O(1),我考虑了 pickle 字符串或文件开头的一些标题信息,其读出不需要处理整个转储。
非常感谢!
编辑:我对此有更新,显然下面给出的答案在 python 3.4 下并不总是有效。如果我只是简单地使用协议 1 腌制值 True,有时我只能恢复协议 0:-/
【问题讨论】:
-
请注意,没有完整性或有效性约束,除了通过 unpickling 之外,您无法检查字符串是否是有效的 pickle 转储。这会产生一些后果:例如缓冲区对象是可拾取的,但结果字符串是不可拾取的。