Python3读取Python2保存pickle文件错误解决方法

Python3读取Python2保存pickle文件错误解决方法,第1张

python2保存pickle文件M,python3读取报错:

数薯简据文件是在Python2下序列化的,所以使用Python3读取时,需要将‘str’转化为'bytes'

小的例子:

with open('final_project_dataset.pkl', 'r') as data_file:

    data_dict = pickle.load( StrToBytes(data_file) )

含有团陵中文字符的话,在类函数里,编码时要制定编码格式,某些字符GBK不支持会报错,如指定为'UTF8'、'GB2312'

在保存的时候塌手戚直接保存为wb,猜测读取时直接用rb读取就不会这么麻烦,没有实际实验,如有朋友有测试结果,欢迎评论。

在Python中存储数据到文件中时,简单的做法是调用open函数执行文件写入 *** 作,但是这样做的话,当我们要重新读取文件内容时,就会出禅旦现类型不匹配的情况,因为读取的都是字符串的形式,所以还需要进行类型转换,这样不简洁。

或者使用eval函数把字符串转换为对象,但是有时它过于强坦裤大,它会执行Python的任何表达式,甚至做出威胁系统正常工作的表达式,这样做不安全。

如果想存储Python原生对象,但又无法信赖文件的数据来源,那么pickle模块会是个理想的选择。

pickle模块是能够让我们直接在文件中存储几乎任何Python对象的高级工具,并不要求我们把字符串转换来转换去,像是个超贺信扰级通用的数据格式化和解析工具。

demo.py:

D = {'name':'Allen', 'age':21}

f = open('p_data.pkl','wb')

import pickle

pickle.dump(D,f)

f.close()

f=open('p_data.pkl','rb')

e=pickle.load(f)

print(e)

print(type(e))

控制台输出:

{'name': 'Allen', 'age': 21}

<class 'dict'>

[Finished in 0.4s]

然后它会在指定路径下生成p_data.pkl文件:

8003 7d71 0028 5804 0000 006e 616d 6571

0158 0500 0000 416c 6c65 6e71 0258 0300

0000 6167 6571 034b 1575 2e

如果控制台提示”attributeError:'module' object has no attribute ‘dump'”,那么很可能是因为你的文件名命名为”pickle.py”,这与内置模块文件重名了,改一下就可以了。。

pkl是python的一种存储文件,需要安装python打开。

在python3.6里,读取pkl文件需要import pickle包。

如打开位于C盘根目录的blabala.pkl文猛碧件。

import pickle

F=open(r'C:\blabala.pkl','rb')

content=pickle.load(F)

然后content就是原数据了。

扩展资料:

优点

简单:Python是一种代表枝漏举简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。

易学:Python极其容易上手,因为Python有极其简单的说明文档。

速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。

免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团搜数体分享知识的概念。

高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。

参考资料来源:百度百科-Python (计算机程序设计语言)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12194716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存