本文目录一览:
- 1、请问大神怎样使用Python中的pickle模块把一个文本文件中所有内容改成存储为序列化模式?
- 2、python里pickle是什么意思
- 3、如何把py文件中生成的数据变成pkl格式
- 4、python pickle 如何读写PyQt4对象
- 5、Python3读取Python2保存pickle文件错误解决方法
请问大神怎样使用Python中的pickle模块把一个文本文件中所有内容改成存储为序列化模式?
import pickle
with open('hello.txt', 'r') as fr:
data = fr.read()
print(data)
with open('data.pickle', 'wb') as fw:
pickle.dump(data, fw, pickle.HIGHEST_PROTOCOL)
with open('data.pickle', 'rb') as fr:
data = pickle.load(fr)
print(data)
python里pickle是什么意思
pickle模块是对Python对象结构进行二进制序列化和反序列化的协议实现,就是把Python数据变成流的形式。
Python, 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议 。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。-pickle.py文件
如何把py文件中生成的数据变成pkl格式
# -*- coding:utf-8 -*-
#使用pickle模块将数据对象保存到文件
import pickle
data1 = {'a': [1, 2.0, 3, 4+6j],
'b': ('string', u'Unicode string'),
'c': None}
selfref_list = [1, 2, 3]
selfref_list.append(selfref_list)
output = open('data.pkl', 'wb')
# Pickle dictionary using protocol 0.
pickle.dump(data1, output)
output.close()
python pickle 如何读写PyQt4对象
在Python中存储数据到文件中时,简单的做法是调用open函数执行文件写入操作,但是这样做的话,当我们要重新读取文件内容时,就会出现类型不匹配的情况,因为读取的都是字符串的形式,所以还需要进行类型转换,这样不简洁。-pickle.py文件
或者使用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”,这与内置模块文件重名了,改一下就可以了。。-pickle.py文件
Python3读取Python2保存pickle文件错误解决方法
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读取就不会这么麻烦,没有实际实验,如有朋友有测试结果,欢迎评论。