2011-02-16 67 views
3

我正在處理大量的文本文件。其中許多用不同的編碼編寫。我創建了包含這些文本文件中的一些子字符串的對象列表。我在打開文件時正在考慮編碼問題(對象已正確創建並可以使用)。 這裏是我的清單:泡菜和編碼問題

len(hands) 
47580 
type(hands) 
<class 'list'> 
type(hands[0]) 
<class '__main__.BridgeHand'> 

現在我嘗試醃製這個對象:

import pickle 
pickle.dump(hands, open("handspi.p", "wb")) 

它創建的9MB文件handspi。 當我嘗試unpickle它的問題開始:

hh = pickle.load(open(#some path to this pickle file)) 

堆棧跟蹤結尾:

File "C:\Python31\lib\encodings\cp1252.py", line 23, in decode 
return codecs.charmap_decode(input,self.errors,decoding_table)[0] 
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 30: character maps to  <undefined> 

我該怎麼做呢? 感謝您的幫助:)

+4

您沒有顯示實際觸發錯誤的確切代碼行 - 這總是一個好主意。也許,您不是以二進制方式打開文件(`「RB」`),但我只能猜測。 – 2011-02-16 12:49:56

+0

是的,謝謝。這解決了這個問題,我是弱智:( – 2011-02-16 13:19:21

回答

7

你可能想嘗試打開該文件在二進制模式下,你正在閱讀它作爲一個ASCII文件。

open('picklefile.pkl','rb')