2011-02-16 7 views
3

상당한 크기의 텍스트 파일로 작업하고 있습니다. 대부분은 다른 인코딩으로 작성되었습니다. 나는 그 텍스트 파일의 부분 문자열을 포함하는 객체의 목록을 만듭니다. 파일을 열 때 (객체가 올바르게 생성되어 사용될 수 있음) 인코딩 문제를 처리하고 있습니다.피클 및 인코딩 관련 문제

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

그것은 9메가바이트 파일 handspi를 만듭니다

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

이 지금은이 객체를 피클하려고 : 여기 내 목록입니다. 내가 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 '')로 파일을 열지는 않았지만 나는 단지 추측 할 수 있습니다. –

+0

예, 고마워요. 그 문제를 해결, 나는 지쳤다 : ( –

+0

Sven 않았다 답변,하지만 그것을 공식화하고 대답으로 게시했습니다. –

답변

7

현재 파일을 ASCII 파일로 읽고 있으므로 이진 모드로 파일을 열어 볼 수 있습니다.

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

그래, 난 붙여 넣기 복사 파이썬 위키 (http://wiki.python.org/moin/UsingPickle) 어디에서 "rb"는 사용되지 않았습니다. 이유는 내가 Windows에 있다고 생각합니다. ( –