用python3读取python2的pickle数据方式


Posted in Python onDecember 25, 2019

问题一:TypeError: a bytes-like object is required, not 'str'

解决:该问题属于Python3和Python2的字符串兼容问题,数据文件是在Python2下序列化的,使用Python3读取时,需要将‘str'转化为'bytes'。

picklefile=open('XXX.pkl','r')
 
class StrToBytes:
  def __init__(self, fileobj):
    self.fileobj = fileobj
  def read(self, size):
    return self.fileobj.read(size).encode()
  def readline(self, size=-1):
    return self.fileobj.readline(size).encode()
 
data=pickle.load(StrToBytes(picklefile))

问题二:UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 44: ordinal not in range(128)

解决:加上encoding编码方式

pickle.load(StrToBytes(data_file),encoding='iso-8859-1')

附上完整的读取代码:

import pickle
class StrToBytes:
  def __init__(self, fileobj):
    self.fileobj = fileobj
  def read(self, size):
    return self.fileobj.read(size).encode()
  def readline(self, size=-1):
    return self.fileobj.readline(size).encode()
 
read = open('XXX.pkl', 'r')
data = pickle.load(StrToBytes(read),encoding='iso-8859-1')
  
print(data)

以上这篇用python3读取python2的pickle数据方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django框架中render_to_response()函数的使用方法
Jul 16 Python
Python实现ssh批量登录并执行命令
Oct 25 Python
Python命令启动Web服务器实例详解
Feb 23 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
Python入门之三角函数全解【收藏】
Nov 08 Python
python的文件操作方法汇总
Nov 10 Python
Python简单实现查找一个字符串中最长不重复子串的方法
Mar 26 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
Python使用pyyaml模块处理yaml数据
Apr 14 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 29 Python
python文件绝对路径写法介绍(windows)
Dec 25 #Python
python 实现将list转成字符串,中间用空格隔开
Dec 25 #Python
python 输出列表元素实例(以空格/逗号为分隔符)
Dec 25 #Python
python 定义类时,实现内部方法的互相调用
Dec 25 #Python
Python:type、object、class与内置类型实例
Dec 25 #Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 #Python
Python之Class&Object用法详解
Dec 25 #Python
You might like
php cookie的操作实现代码(登录)
2010/12/29 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
php实现mysql数据库分表分段备份
2015/06/18 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
js 页面输出值
2008/11/30 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
基于hashlib模块--加密(详解)
2017/06/21 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
python中将字典形式的数据循环插入Excel
2018/01/16 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
关于Python解包知识点总结
2020/05/05 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
在什么时候需要使用"常引用"
2015/12/31 面试题
渗透攻击的测试步骤
2014/06/07 面试题
高老头读书笔记
2015/06/30 职场文书
python办公自动化之excel的操作
2021/05/23 Python
浅谈python数据类型及其操作
2021/05/25 Python
MySQL使用IF语句及用case语句对条件并结果进行判断 
2022/09/23 MySQL