在Python2中使用pickle加载utf-8文件

时间:2015-09-04 17:08:01

标签: python utf-8

我正在编写一个Python脚本,它适用于OSX(10.6)并使用Python 2.7。 我的命令是:

    morphcache = codecs.open('file.txt','r','utf-8')
    morphology = pickle.load(morphcache)
    morphcache.close()

它使用由另一个网站生成的文本文件(utf-8),其中包含换行符和字符,如č,š,ž等。

由于它使用转义字符,因此会报告此错误:

Traceback (most recent call last):   File "createxml.py", line 38, in <module>
morphology = pickle.load(morphcache)   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[key](self) KeyError: 'sV\xc5\xbedeti\np1\nSVerb,\xc5\xbedeje,\xc5\xbedeti,\xc5\xbedeti,\xc5\xbedi,\xc5\xbedijo\np2\nsV\xc5\xbeupnik\np3\nVSu' make: *** [all] Error 1

我正在寻找一个解决方案如何工作 - 问题的所有解决方案都是说以不同的方式(而不是utf-8)将文本写入文件但是我不能这样做,我已经得到了输入以这种形式提交。

或者首先应该以另一种方式将此文件读取和写入磁盘 - 然后重新打开以进行酸洗?

感谢。

1 个答案:

答案 0 :(得分:0)

Pickle文件不是文本文件。它们包含Python对象定义(可能包含unicode个文本对象或str字节字符串。)

以二进制模式打开文件并加载:

with open('file.txt', 'rb') as morphcache:
    morphology = pickle.load(morphcache)