pickle 在python 2和python 3中兼容性问题
以下的演示均在python 3环境下进行。
我们以一个简单的文件打开和文件读为例说明,pickle读文件时可能存在的编码问题:
import gzip
import pickle# 使用with结构避免手动的文件关闭操作
with gzip.open('./mnist.pkl.gz', 'rb') as f:training_data, validation_data, test_data = pickle.load(f)
如果沿用python 2.x的做法,如上所示,而不做任何编码格式上的设置,直接运行,编译器会提示如下错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128)
0. 一种 import 的兼容性解决思路
try:import cPickle as pickle
except ImportError:import pickle
1. 解决方案
一种可行的解决方案是:
with gzip.open('./mnist.pkl.gz', 'rb') as f:u = pickle._Unpickler(f)u.encoding = 'latin1'training_data, validation_data, test_data = u.load()
或者更为精炼地:
with gzip.open('./mnist.pkl.gz', 'rb') as f:training_data, validation_data, test_data = pickle.load(f, encoding='latin1')
references
[1] <Pickle incompatability of numpy arrays between Python 2 and 3>
pickle 在python 2和python 3中兼容性问题相关推荐
- python pickle模块的使用/将python数据对象序列化保存到文件中
# Python 使用pickle/cPickle模块进行数据的序列化"""Python序列化的概念很简单.内存里面有一个数据结构, 你希望将它保存下来,重用,或者发送给 ...
- python面试常见问题-Python面试中常见的40个问题
1)什么是Python?使用Python有什么好处? Python是一种编程语言,包含对象,模块,线程,异常和自动内存管理.Python的好处在于它简单易用,可移植,可扩展,内置数据结构,并且它是一个 ...
- python面试常见问题-Python面试中最常见的25个问题
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. Python是一个面向对象的解释型的交互式高级脚本语言.Python被设计成一种高可读性的语言,因为它大量 ...
- python编写ATM类_Python中编写类的各种技巧和方法
有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling).你可以把它当作一个教程, ...
- 使用Python批量修改PPTX文件中文本框格式
问题描述:最近正在整理Python教材的配套PPT,原来的PPT是4:3的,考虑到现在很多屏幕都是宽屏的,于是打算重新整理一下.对于正常的幻灯片,直接在"页面设置"中修改一下就可以 ...
- Python批量设置pptx文件中文本框边框与填充样式(含20分钟视频讲解)
近期会议: 10月30-11月1日 全国高校Python课程高级研修班(苏州) 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清 ...
- pickle —— Python 对象序列化(python=3.8)
模块 pickle 实现了对一个 Python 对象结构的二进制序列化和反序列化. "Pickling" 是将 Python 对象及其所拥有的层次结构转化为一个字节流的过程,而 & ...
- 使用Python和OpenCV检测图像中的条形码
使用Python和OpenCV检测图像中的条形码 1. 效果图 2. 算法的步骤 3. 源码 参考 这篇博客将介绍使用计算机视觉和图像处理技术进行条形码检测的必要步骤,并演示使用Python编程语言和 ...
- 使用Python,OpenCV查找图像中的最亮点
Python,OpenCV找出图像中的最亮点 1. 原理 2. 优化 3. 效果图 4. 源码 参考 这篇博客将向您展示如何使用Python和OpenCV查找图像中的最亮点,以及应用单行预处理代码-- ...
最新文章
- Django REST framework的一些奇巧淫技(干货!!!)
- linux下使用syslog日志调试程序快速的调试代码信息的过程
- 全排列问题pascal解题程序
- VTK:vtkCompassWidget用法实战
- Fragment之三:根据屏幕尺寸加载不同的Fragment
- Azure 物联网开发者体验 7 月更新:边缘计算开发工具,ARM64 设备开发,VS Code 容器化开发工具...
- 信息学奥赛一本通 1025:保留12位小数的浮点数 | OpenJudge NOI 1.1 05
- 配置webpack.config.js遇到的一些问题
- trunk口_什么是Trunk?Trunk详解
- python随机出题_什么软件可以自制题库随机出题?怎么操作
- java列举生活中类和对象_趣味解读Python面向对象编程 (类和对象)
- Sphinx语法设置
- 华硕服务器安装系统安装教程,Asus华硕笔记本重装系统教程
- 「星火计划沙龙视频」腾讯自研图数据库核心研发思路揭秘
- C#通用类库整理--字符串处理类
- 领航云计算发展风向标,亚马逊云科技的这些硬核布局值得关注
- 构造器(也称构造方法)
- kata cantainer介绍及Ubuntu安装kata cantainer
- 作为程序员,哪些技能是必须要掌握的?
- 【路径追踪】数学工具--蒙特卡洛方法(Monte Carlo)
热门文章
- php验证码图片看不清更换代码,php如何实现验证码看不清换一张的效果
- 计算机病毒不会直接危害计算机用户的健康,北京语言大学入学测试机考(高起点)计算机基础模拟题...
- Sublime Text3 python交互式环境+快捷键设置
- gstreamer的rtsp推流(笔记)
- 剑指offer所有的题目总结(转)
- springboot整合curator实现分布式锁
- ABAP 常用FUNCTION (最近工作中用到的)
- 自创本派高考理数试题集现在发布
- 章节2:SQL之多表连接
- js学习笔记 chapter5 引用类型