簡體   English   中英

如何在 python 3 中讀取在 python 2.7 或 3 中復制的泡菜?

[英]How to read pickle that was dupmed in either python 2.7 or 3, in python 3?

  • 我讀過我可以讀取在 python 3 中的 python 2.7 中使用的泡菜

    content = pickle.load(o, encoding='latin1')

  • 顯然,我可以使用以下命令讀取在 python 3 中轉儲的泡菜

    content = pickle.load(o)


我的問題是,我不知道泡菜的來源。 它可以是任何一個。

如何測試我正在嘗試讀取哪種類型的泡菜以使用正確的方法?

靈感來自@DeepSpace:

def load(path):
    print(f"loading pkl: {os.path.abspath(path)}")
    assert os.path.isfile(path)
    try:
        with open(path, "rb") as f:
            content = pickle.load(f)
    except UnicodeDecodeError:  # pickle was created with python 2.7
        with open(path, "rb") as f:
            content = pickle.load(f, encoding='latin1')

    return content

使用 if else: 嘗試在沒有編碼的情況下進行正常加載並進行一些讀取,如果成功則使用 encoding='latin1' 進行 else 加載

暫無
暫無

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

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