簡體   English   中英

如何在 Python 2.7 * 不改變它* 中加載 Python 3 pickle?

[英]How to load a Python 3 pickle in Python 2.7 *Without changing it*?

我正在將一大塊軟件從 python 2.7 遷移到 python 3.7

出於回溯測試的目的,我需要能夠在新的(3.7)python 中讀取舊的(2.7)泡菜,反之亦然。

我可以在新 python 中讀取舊泡菜。

我還希望能夠在舊 python 中讀取新泡菜。

我找到了這個答案,但它對我不利,因為它需要我更換泡菜。

有沒有辦法在不改變泡菜的情況下在 python 2 中讀取 python 3泡菜

這是我能找到的最佳解決方案:

由於我可以更改新軟件,但不能更改舊軟件,因此每次創建必須由舊軟件讀取的泡菜時,我都會這樣做

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

這會在新 python 中創建舊泡菜。

因此舊的軟件 API 保持不變。

您可能會注意到 unicode->bytes 問題,但那是另外一回事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM