请教一个pickle的问题
源码是这样的:#coding=utf-8
import pickle
posdata = pickle.load(open('pos_review.pkl','r'))
posWords = list(itertools.chain(*posdata))
print posWords
其中 pos_review.pkl 是ANSI格式的,里面的内容是:
123,"abcdedf",["ac",123],{"key":"value","key1":"value1"}
代码运行后,错误是:
Traceback (most recent call last):
File "C:\Python27\pc\test1.py", line 4, in <module>
posdata = pickle.load(open('pos_review.pkl','r'))
File "C:\Python27\lib\pickle.py", line 1378, in load
return Unpickler(file).load()
File "C:\Python27\lib\pickle.py", line 858, in load
dispatch(self)
File "C:\Python27\lib\pickle.py", line 1142, in load_pop_mark
k = self.marker()
File "C:\Python27\lib\pickle.py", line 874, in marker
while stack is not mark: k = k-1
IndexError: list index out of range
请问我哪里错了吗?请指教,谢谢各位 pickle中的ANSI格式是什么?我看pos_review.pkl的内容,根本都不像合法pickle格式。>>> import pickle
>>> from cStringIO import StringIO
>>> infile = StringIO('123,"abcdedf",["ac",123],{"key":"value","key1":"value1"}')
>>> data = pickle.load(infile)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1378, in load
return Unpickler(file).load()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 858, in load
dispatch(self)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1142, in load_pop_mark
k = self.marker()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 874, in marker
while stack is not mark: k = k-1
IndexError: list index out of range
>>> infile.getvalue()
'123,"abcdedf",["ac",123],{"key":"value","key1":"value1"}'
>>> infile = StringIO()
>>> pickle.dump(,{"key":"value","key1":"value1"}], infile)
>>> infile.getvalue()
"(lp0\nI123\naS'abcdedf'\np1\na(lp2\nS'ac'\np3\naI123\naa(dp4\nS'key1'\np5\nS'value1'\np6\nsS'key'\np7\nS'value'\np8\nsa."
回复 2# timespace
那请教下怎么从pos_review.pkl文件载入数据呢?
回复 3# wadeheat2
按照二进制模式打开open(..., 'rb'),然后pickle.load,就这么简单。如果有问题,说明xxx.pkl本身就是非法数据。
回复 4# timespace
open和load写在一条语句里没啥问题吧?我分开先open,再load报同样的错
回复 5# wadeheat2
是否分开,没影响。除非你能上传xxx.pkl文件,爱莫能助。
页:
[1]