[英]How to read pickle that was dupmed in either python 2.7 or 3, in python 3?
[英]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 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.