Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python - pickle 文件不同 python 环境的转换

Python - pickle 文件不同 python 环境的转换

作者头像
AIHGF
发布于 2019-02-27 09:38:24
发布于 2019-02-27 09:38:24
1.4K00
代码可运行
举报
文章被收录于专栏:AIUAIAIUAI
运行总次数:0
代码可运行

Python - pickle 文件不同 python 环境的转换

在读取一个 pickle 文件时, 由于刚开始未知其是有 python2 还是 python3 的 pickle 库保存的, 在 python2 环境读取时, 导致出现错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pickle
testpkl = pickle.loads(open("test.pickle", "rb").read())

Traceback (most recent call last): File “”, line 1, in File “/usr/lib/python2.7/pickle.py”, line 1382, in loads return Unpickler(file).load() File “/usr/lib/python2.7/pickle.py”, line 858, in load dispatchkey File “/usr/lib/python2.7/pickle.py”, line 886, in load_proto raise ValueError, “unsupported pickle protocol: %d” % proto ValueError: unsupported pickle protocol: 3

其原因是, 该test.pickle是 python3 环境下生成的, 因此 python2 读取时不兼容.

解决方案:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env python3
import pickle

import pickle
testpkl = pickle.loads(open("test.pickle", "rb").read())

pickle.dump(w, open("testpkl_py2.pkl","wb"), protocol=2)

在 python2 环境读取 testpkl_py2.pkl 即可.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年05月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 系列文章 —— json 详解
json-dump&dumps #!/usr/bin/python3 #字典转成json字符串 加上ensure_ascii=False以后,可以识别中文, indent=4是间隔4个空格显示 import json d={'小明':{'sex':'男','addr':'上海','age':26},'小红'
玩转编程
2022/01/13
3100
python pickle 模块的使用以及2种典型报错处理
json:用于字符串和Python数据类型间进行转换   pickle: 用于python特有的类型和python的数据类型间进行转换   json提供四个功能:dumps,dump,loads,load   pickle提供四个功能:dumps,dump,loads,load
Python疯子
2019/05/15
5.2K0
python3 pickle模块详解
python程序运行中得到了一些字符串,列表,字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据。python模块大全中pickle模块就排上用场了, 他可以将对象转换为一种可以传输或存储的格式。
周小董
2019/03/25
1.4K0
Python之pickle建议收藏
  >>> [[1, 1, ‘yes’], [1, 1, ‘yes’], [1, 0, ‘no’], [0, 1, ‘no’], [0, 1, ‘no’]]   >>> {0: [1, 2, 3, 4], 1: (‘a’, ‘b’), 2: {‘c’: ‘yes’, ‘d’: ‘no’}}   >>> [[1, 1, ‘yes’], [1, 1, ‘yes’], [1, 0, ‘no’], [0, 1, ‘no’], [0, 1, ‘no’]]   >>> {0: [1, 2, 3, 4], 1: (‘a’, ‘b’), 2: {‘c’: ‘yes’, ‘d’: ‘no’}}
全栈程序员站长
2021/12/19
5080
Python模块知识4:序列化Json/pickle
序列化与反序列化 序列化:把Python的基本数据类型转为字符串 反序列化:把字符串转为Python的基本数据类型 Python中用于序列化的两个模块: json 用于【字符串】和 【python基本数据类型】 间进行转换;由于字符串是各语言通用的,json更适合跨语言;但仅支持dict、list、tuple、str、int、flost、True、False pickle 用于【python特有的类型】 和 【python基本数据类型】间进行转换,支持任何类型,更适合所有类型的序列化,比如面向对
企鹅号小编
2018/01/11
1.2K0
Python模块知识4:序列化Json/pickle
对象序列化,只听说过? 可笑!
pickle 模块可以实现任意的 Python 对象转换为一系列字节 (即序列化对象) 的算法。这些字节流可以被传输或存储,接着也可以重构为一个和原先对象具有相同特征的新对象。
Python知识大全
2020/03/19
4880
一文带你搞懂Python中pickle模块
pickle模块是Python专用的持久化模块,可以持久化包括自定义类在内的各种数据,比较适合Python本身复杂数据的存贮。
Go进阶者
2021/09/17
3.4K0
一文带你搞懂Python中pickle模块
python 序列化数据:pickle与json ,dumps与loads
python 序列化数据:pickle与json pickle 只能在python中用python文件间序列化,实现了两个python 内存数据的交互(可序列化任何对象(类,列表)) json 在任何软件间可以在内存数据之间的交互,只能序列化常规的对象(列表 ,字典等) #!usr/bin/env python #_*_ coding:utf-8 _*_ import chardet import pickle li=['a','hello','world','ok'] print('pickle.
学到老
2018/03/19
1K0
python 序列化数据:pickle与json ,dumps与loads
hand first python 选读(1)
结果pause解析不了。每一行做多一个判断。取反用的是 not方法,查找用的是 find方法。
一粒小麦
2019/07/18
4550
hand first python 选读(1)
什么是pkl文件_桌面显示不出来怎么办是什么问题
对于.pkl文件,我是在接触 SMPL模型的时候用到的。SMPL的开源项目包里,有model文件夹,打开有两个.pkl文件。然后,找到了一个说的相对比较详细的网址https://jingyan.baidu.com/article/59a015e36ef251f794886598.html
全栈程序员站长
2022/09/30
7660
day5-json和pickle序列化
一.json模块 序列化:把一个对象的形态改变一下,使他能够存放在文件中,或者在网络上传输,序列化也叫持久化,是把对象存储到永久介质中,这样就不会因为掉电而丢失。 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,json用于字符串和python的数据类型进行转换,json模块提供了四个功能:dumps、dump、loads、load json.dumps和json.loads实例: 1 #!/usr/bin/python3 2 import json 3 da
用户1679793
2018/04/28
6830
python的pickle模块
该pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议。 “Pickling”是将Python对象层次结构转换为字节流的过程, “unpickling”是反向操作,从而将字节流(来自二进制文件或类似字节的对象)转换回对象层次结构。pickle模块对于错误或恶意构造的数据是不安全的。
狼啸风云
2019/09/25
1.1K0
python的pickle模块
python Json与pickle数据序列化
在程序运行的过程中,所有的变量都是在内存中。一旦程序结束,变量所占用的内存就被操作系统全部回收。
py3study
2018/08/02
1.1K0
python---pickle
Python 中有个序列化过程叫作 pickle,它能够实现任意对象与文本之间的相互转化,也可以实现任意对象与二进制之间的相互转化。也就是说,pickle 可以实现 Python 对象的存储及恢复。
雷子
2023/12/13
2620
python---pickle
Python 反序列化浅析
文章首发于跳跳糖社区https://tttang.com/archive/1782/
用户9691112
2023/05/18
7890
Python学习笔记(二)——IO输入输出
本文是廖雪峰的Python教程的笔记,主要是摘抄一些重点。所以我把他划分到转载里。侵删。
蛮三刀酱
2019/09/10
5750
python 序列化数据:pickle与json ,dumps与loads,解决can't pickle _thread.lock objects
pickle 只能在python中用python文件间序列化,实现了两个python 内存数据的交互(可序列化任何对象(类,列表)) json 在任何软件间可以在内存数据之间的交互,只能序列化常规的对象(列表 ,字典等)
学到老
2019/02/14
6.8K0
从零基础到解题之 Python is the best language
-目录- 前言 环境搭建 源码结构 题目分析 Python is the best language1 Python is the best language2 思考攻击点 pickle序列化学习 题目分析 攻击构造思考 payload 后记 前言 自己对python的web框架了解并不是很多,于是为了学习……打算从零开始一步一步分析一下如何去做flask的题目。 环境搭建 首先 python db_create.py 发现缺少库依赖,然后一路装过来 pip install Flask pip in
安恒网络空间安全讲武堂
2018/04/18
8830
Python pickle 反序列化实例分析
之前 SUCTF 出了一题 pickle 反序列化的杂项题,就感觉相当有意思。后来 Balsn 一次性搞了三个,太强了,学到了很多,感谢这些师傅。下文记录了我的学习笔记以及踩过的坑,希望对大家理解 pickle 有点帮助。
wywwzjj
2023/05/09
8420
Python pickle 反序列化实例分析
pyspark读取pickle文件内容并存储到hive
在平常工作中,难免要和大数据打交道,而有时需要读取本地文件然后存储到Hive中,本文接下来将具体讲解。
西西嘛呦
2020/10/27
2.8K0
相关推荐
Python 系列文章 —— json 详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验