![](/img/trans.png)
[英]Pickle , read in data , unsupported pickle protocol: 3 python 2.7
[英]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.