当前位置: 首页 > Python编程 > Python编程实战技能 > Python编程基础入门 > 一文带你读懂Python中的pickle模块

一文带你读懂Python中的pickle模块

发布时间:2020年09月27日 09:43:04 来源: 点击量:634

【摘要】pickle模块:属于python专有的模块,用法,功能与json类似。常用方法:dump(obj,fp):将对象以字符串的形式写入文件中。load(fp):将数据从

pickle模块:

属于python专有的模块,用法,功能与json类似。

常用方法:

dump(obj,fp):将对象以字符串的形式写入文件中。

load(fp):将数据从文件中读出,并返回(需要变量接收)。

dumps(obj):将对象转换成json字符串形式。

loads(str):将json字符串数据转换成原来的数据类型。

dump(obj,fp)  |  load(fp) 示例如下;

import pickle
# 将数据以json方式写入文件
dict_1 = {"电影":"黄飞鸿","电视剧":"霍元甲"}
file_write = open("pickle.txt",mode="wb")
pickle.dump(dict_1,file_write)  # 将字典以字节的形式写入文件
file_write.close()
# 从文件中以json方式读取数据
file_read = open("pickle.txt",mode="rb")
dict_2 = pickle.load(file_read)  # 将文件中内容转换成原数据类型并返回
file_read.close()
print(dict_2.items(),type(dict_2)) # 打印转换后的数据

打印内容如下

dict_items([('电影', '黄飞鸿'), ('电视剧', '霍元甲')]) <class 'dict'>

相关推荐:《Python视频教程》

dumps(obj)  |  loads(obj) 示例如下;

import pickle
dict_1 = {"电影":"黄飞鸿"}
pickle_byte = pickle.dumps(dict_1)  # 将字典转换成pickle字节
print(pickle_byte)
# 将pickle字节转换成原数据
dict_2 = pickle.loads(pickle_byte)
print(dict_2.items(),type(dict_2)) # 打印转换后的数据

打印内容如下

b'x80x03}qx00Xx06x00x00x00xe7x94xb5xe5xbdxb1qx01Xtx00x00x00xe9xbbx84xe9xa3x9exe9xb8xbfq
x02s.'
dict_items([('电影', '黄飞鸿')]) <class 'dict'>

与json不同的是pickle可以多次dump多次load,如下:

import pickle
dict_1 = {"电影":"黄飞鸿"}
dict_3 = {"电视剧":"霍元甲"}
dict_5 = {"动画片":"葫芦娃"}
file_write = open("pickle.txt",mode="wb")
pickle.dump(dict_1,file_write)  # 将dict_1以字节的形式写入文件
pickle.dump(dict_3,file_write)  # 将dict_3以字节的形式写入文件
pickle.dump(dict_5,file_write)  # 将dict_5以字节的形式写入文件
file_write.close()
file_read = open("pickle.txt",mode="rb")
dict_2 = pickle.load(file_read)  # 将文件中内容转换成原数据类型并返回
dict_4 = pickle.load(file_read)  # 将文件中内容转换成原数据类型并返回
dict_6 = pickle.load(file_read)  # 将文件中内容转换成原数据类型并返回
file_read.close()
print(dict_2.items(),type(dict_2)) # 打印转换后的数据
print(dict_4.items(),type(dict_4)) # 打印转换后的数据
print(dict_6.items(),type(dict_4)) # 打印转换后的数据

打印内容如下

dict_items([('电影', '黄飞鸿')]) <class 'dict'>
dict_items([('电视剧', '霍元甲')]) <class 'dict'>
dict_items([('动画片', '葫芦娃')]) <class 'dict'>

小结:

1、json属于通用的模块,Java,JS等其它语言也支持。

     pickle是Python私有的,只支持Python。

2、json将对象转换成json字符串类型。

     pickle将对象转换成pickle字节类型。

3、json只能转换dict,list,tuple,str,int,float,bool值等简单数据类型

     pickle能转换除了lamda以外的所有已知数据类型。

4、json虽然可以多次dump但是load会报错(这是最大的伤)。

     pickle可以多次dump,多次load。

相关推荐:

一文带你读懂JSON模块

分享到: 编辑:wangmin

就业培训申请领取
您的姓名
您的电话
意向课程
点击领取

环球青藤

官方QQ

扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群

绑定手机号

应《中华人民共和国网络安全法》加强实名认证机制要求,同时为更加全面的体验产品服务,烦请您绑定手机号.

预约成功

本直播为付费学员的直播课节

请您购买课程后再预约

环球青藤移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载
环球青藤官方微信服务平台

刷题看课 APP下载

免费直播 一键购课

代报名等人工服务

课程咨询 学员服务 公众号

扫描关注微信公众号

APP

扫描下载APP

返回顶部