泡菜和编码的问题

时间:2011-02-16 11:54:40

标签: python encoding pickle

我正在使用大量的文本文件。他们中的许多人用不同的编码书写。我创建了包含这些文本文件中的一些子字符串的对象列表。打开文件时我正在处理编码问题(正确创建对象并可以使用)。 这是我的清单:

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

现在我尝试挑选这个对象:

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

它创建9MB文件handspi。 当我试图解开它时,问题就出现了:

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>

我该怎么办? 感谢您的帮助:)

1 个答案:

答案 0 :(得分:7)

您可能想尝试以二进制模式打开文件,因为您当前正在将其作为ascii文件读取。

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