转自 http://blog.csdn.net/programmer_wei/article/details/50994318

python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

python2使用的是cPickle模块,而在python3中cPickle已经被取消,取而代之的是pickle模块。

开发过程中,我曾经遇到一个奇怪的问题,在读取一个文件时候,使用python2的如下方式:

import cPickle
train, test, dicts = cPickle.load(open(“./dataset/atis.pkl”))

是可以正常读取文件的。
可是当换做python3的方式读取文件时候,如下:

import pickle
train, test, dicts = pickle.load(open(“./dataset/atis.pkl”))

却获得了错误提示,提示信息如下:

Traceback (most recent call last):
File “Main.py”, line 4, in
train, test, dicts = pickle.load(open(“./dataset/atis.pkl”))
TypeError: ‘str’ does not support the buffer interface

查询错误信息后得知解决办法 链接,应该指明用二进制方式打开文件,于是代码改为:

import pickle
train, test, dicts = pickle.load(open(“./dataset/atis.pkl”, “rb”))

可是这时候错误变成了:

Traceback (most recent call last):
File “Main.py”, line 4, in
train, test, dicts = pickle.load(open(“./dataset/atis.pkl”, “rb”))
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe8 in position 0: ordinal not in range(128)

于是再次求助万能的google,终于找到了解决办法 链接,我们需要告诉pickle:how to convert Python bytestring data to Python 3 strings,The default is to try and decode all string data as ASCII,所以代码改为:

import pickle
train, test, dicts = pickle.load(open(“./dataset/atis.pkl”, “rb”), encoding=’iso-8859-1’)
问题终于的到了解决。

ISO8859-1,通常叫做 Latin-1。Latin-1 包括了书写所有西方欧洲语言不可缺少的附加字符。iso8859-1 和 ascii 编码相似。但为了方便表示各种各样的语言,逐渐出现了很多标准编码,重要的有如下几个。
而 gb2312 是标准中文字符集。
UTF-8 是 UNICODE 的一种变长字符编码,即 RFC 3629。简单的说——大字符集。可以解决多种语言文本显示问题,从而实现应用国际化和本地化。

https://zhidao.baidu.com/question/26613602.html
https://www.cnblogs.com/doudou-taste/p/7351278.html

python3使用pickle读取文件提示TypeError或者UnicodeDecodeError的解决办法相关推荐

  1. Qt直接运行生成的exe文件提示“缺少Qt5Core.dll”的解决办法

    Qt直接运行生成的exe文件提示"缺少Qt5Core.dll"的解决办法 [错误描述] 在QtCreator下,程序可以正常运行,但是当关闭QtCreator后,在"de ...

  2. source:读取文件 “/etc/profile” 时发生错误解决办法

    新装了最火的Linux发行版Manjaro,在/etc/profile中配置了JDK环境变量之后,刷新环境变量时,出现 source:读取文件 "/etc/profile" 时发生 ...

  3. U盘复制文件提示错误0x80071AC3无法复制解决办法

    使用U盘进行复制文件时,出现了系统提示0x80071ac3错误的情况,导致复制失败.那么对此有没有什么方法可以解决呢?我们可以试试系统自带的修复命令来修复它,下面我们一起来看看具体的操作方法. 1.这 ...

  4. 关于压缩jar包时提示*.*没有这个文件或目录的问题以及解决办法:

    关于压缩jar包时提示.没有这个文件或目录的问题以及解决办法: 问题描述: 我在打包jar时,CMD中进入到包的上一层目录. 在命令提示符中输入 提示如下: 从提示中可知没有找到我们想要打包的clas ...

  5. python 读取文件报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb5 in position 0: invalid start

    python 读取文件报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start ...

  6. PS打开PSD文档服务器未响应,win7打开psd打不开怎么办|win7打开psd文件提示无法完成请求的解决方法...

    psd是一种图片格式,是图形设计软件Photoshop的专用格式.可最近有win7 32位旗舰版用户反映,psd文件突然打不开了,总是提示"无法完成请求".遇到win7打开psd打 ...

  7. windows7删除正在计算机,win7系统删除文件提示“正在准备再循环”的解决教程

    有时候可能会遇到win7系统删除文件提示"正在准备再循环"的问题,如果我们遇到了win7系统删除文件提示"正在准备再循环"的问题,要怎么处理win7系统删除文件 ...

  8. 织梦Dede上传软件提示“你指定要上传的文件或文件大小超过限制”的解决办法

    织梦DedeCMS提示"你指定要上传的文件或文件大小超过限制"的解决办法 时间:2014-09-28 来源:互联网 作者:网络 阅读:1598次 如图所示,出现此情况的原因主要如下 ...

  9. FileSystemWatcher 读取文件时出现被占用的解决方法

    FileSystemWatcher 读取文件时出现被占用的解决方法 参考文章: (1)FileSystemWatcher 读取文件时出现被占用的解决方法 (2)https://www.cnblogs. ...

  10. idea中*mapper.xml文件字体颜色变成黄色的解决办法

    idea中*mapper.xml文件字体颜色变成黄色的解决办法 问题描述: 今天在写*Mapper.xml文件时,发现此文件中代码的颜色变成黄色了,没有办法使用idea的提示功能,具体如下: 解决方案 ...

最新文章

  1. SLAM综述|激光与视觉融合SLAM
  2. Uber将向公众开放出行大数据:希望能更好规划城市出行
  3. 2019年中国十大人才发展趋势
  4. Lecture 20 Parallel Algorithms I
  5. 4 关卡流 进阶_赛博朋克2077:实用玩法攻略,技术流玩法攻略
  6. 顶尖技术专家严选,15场前沿论坛思辨,2019中国大数据技术大会邀您共赴!
  7. 浅谈SpringMVC之DispatcherServlet
  8. qrcodeJS生成二维码
  9. The game of life(生命游戏)新算法
  10. SimpleDateFormat线程不安全及解决方式
  11. 至少连接一个aura sync兼容设备_EDA365:浅谈电磁兼容
  12. linuxpv操作实验_操作系统实验三:Linux进程管理及其扩展
  13. linux 配额不起作用,Linux 配额
  14. win7 计算机 只有硬盘分区,电脑只有一个C盘怎么办?一招教你正确分区!-win7磁盘分区...
  15. svg实现圆环倒计时动画效果
  16. 字符编码 unicode 及其在javascript 中的使用
  17. 深度学习图像分类:Kaggle植物幼苗分类(Plant Seedlings Classification)完整代码
  18. 广东计算机考试只能在学校报名吗,广东省计算机等级考试报名考点名单
  19. TOP100summit:【分享实录-华为】微服务场景下的性能提升最佳实践
  20. 西南科技大学数据库实验一

热门文章

  1. 代理模式(Proxy) 静态
  2. 爬虫练习五:多进程爬取股市通股票数据
  3. Linux之Samba部署
  4. HDU3746 Cyclic Nacklace KMP求循环节
  5. 冲刺七天----03
  6. 【转载】关于.NET下开源及商业图像处理(PSD)组件
  7. [转]详细解说:简单CSS3实现炫酷读者墙
  8. 链表简介(三)——在单向链表中删除节点
  9. 对权值线段树剪枝的误解--以HDU6703为例
  10. python数据持久存储:pickle模块的基本使用