gpt4 book ai didi

python - 如何在 Python 2.7 中加载 Python 3 pickle *不改变它*?

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:19 25 4
gpt4 key购买 nike

我正在将一个大型软件从 python 2.7 迁移到 python 3.7

出于回溯测试的目的,我需要能够在新的 (3.7) python 中读取旧的 (2.7) pickle,反之亦然。

I can read old pickles in new python.

我还希望能够在旧Python中读取新的 pickle 。

I found this answer ,但这对我来说不好,因为它需要我更换 pickle 。

有没有办法在 python 2 中读取 python 3 pickle 而不改变 pickle

最佳答案

这是我能找到的最佳解决方案:

由于我可以更改新软件,但不能更改旧软件,因此每次我创建一个必须由旧软件读取的pickle时,我都会这样做

def create_old_pickle(new_pickle):
loaded = pickle.loads(new_pickle)
repickled = pickle.dumps(loaded, protocol=2)
return repickled

这会在新的 python 中创建旧的 pickle。

因此旧的软件 API 保持不变。

您可能会注意到 unicode->bytes 问题,但那是另一回事。

关于python - 如何在 Python 2.7 中加载 Python 3 pickle *不改变它*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59630013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com