Python中的Pickle模块实现了基本的数据序列与反序列化

Pickle模块可以将对象转换为一种可以传输或存储的格式用于保存字符串、列表、字典等数据。

一、dump()方法

pickle.dump(obj, file, [,protocol])

obj:表示要封装的对象

file:表示obj要写入的文件对象,file必须以二进制可写模式打开--'wb'

注释:序列化对象,将对象obj保存到文件file中去。参数protocol是序列化模式,默认是0(ASCII协议,表示以文本的形式进行序列化),protocol的值还可以是1和2(1和2表示以二进制的形式进行序列化。其中,1是老式的二进制协议;2是新二进制协议)

注:python--  open()函数:用于打开一个文件,创建一个file对象

open(name,mode):name---一个包含了你要访问的文件名称的字符串

                                        mode---打开文件模式('rb':read binary 二进制可读;'wb':write binary 二进制可写)

二、load()方法

pickle.load(file)

file:要以二进制可读模式打开--'rb'

注释:反序列化对象,将文件中的数据解析为一个python对象。

具体使用方法:

方法一:
input:

a=[[1,2,3],[2,3,4],[3,4,5]]
b=[[2,2,3],[3,3,4],[4,4,5]]

pickle.dump(a,open('tmp.pkl','wb'))
#tmp.pkl为文件名详细路径,或者和该程序.py文件在同一个工程(文件夹)下
pickle.dump(b,open('tmp.pkl','wb'))

new_data2=pickle.load(open('tmp.pkl','rb'))
new_data3=pickle.load(open('tmp.pkl','rb'))

print(new_data2)
print(new_data3)

out:
[[2, 2, 3], [3, 3, 4], [4, 4, 5]]
[[2, 2, 3], [3, 3, 4], [4, 4, 5]]

用这种方法多次dump,只会保留最后一次的数据
方法二:
input:
a=[[1,2,3],[2,3,4],[3,4,5]]
b=[[2,2,3],[3,3,4],[4,4,5]]
f=open('tmp.pkl','wb')

pickle.dump(a,f)
pickle.dump(b,f)

f.close()

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

new_data2=pickle.load(f)
new_data3=pickle.load(f)

print(new_data2)
print(new_data3)
output:
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]
[[2, 2, 3], [3, 3, 4], [4, 4, 5]]
用这种写法可以在一个pkl文件中写入多个数据,但是实际使用时,一个文件存入多个数据,可能会混淆,不推荐使用
建议一个pkl文件只写入一个数据,通过文件名进行标识

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值