2011-02-16 66 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')