Pickle持久化

Pickle模块将程序运行的数据信息序列化的存储到文件中(二进制),方便重新读取调用

首先创建文件:file=open("word.pkl","rb+")

存入:pickle.dump(data,file)

读取:pickle.load(file)

例如:

import pickle as p
word_to_ix1={'chen':[0],'hongming':[1],'ming':[2]}#也可以是其他类型数据
word_to_ix2={'chen':[0],'xinghong':[1],'hushuiying':[2]}
file=open('word.pkl','wb+')
p.dump(word_to_ix1,file)
p.dump(word_to_ix2,file)
file.seek(0)#文件读写标记移到文件开始
d=p.load(file)
c=p.load(file)
print(d)
print(c)

输出:

{'ming': [2], 'chen': [0], 'hongming': [1]}
{'hushuiying': [2], 'chen': [0], 'xinghong': [1]}

注意

pickle.dump和pickle.dumps是有区别的。前者是讲数据写如一个pkl文件,后者是将数据写入一个对象(注意一个是load一个是loads)。具体例子如下:

import pickle
from collections import deque
s=np.asarray([1,2,3,4,5])
a=np.asarray([1,2,3,4,5])
r=np.asarray([1,2,3,4,5])
s1=np.asarray([1,2,3,4,5])
t=np.asarray([1,2,3,4,5])

file=open("data.pkl",'wb+')
list=[(s,a,r,s1,t),(s,a,r,s1,t),(s,a,r,s1,t),(s,a,r,s1,t),(s,a,r,s1,t)]
data=deque(maxlen=100)
data.extend(list)
s=pickle.dumps(data)
out1=pickle.loads(s)
pickle.dump(data,file)

list1=[(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0)]
data1=deque(maxlen=100)
data1.extend(list1)
pickle.dump(data1,file)
file.close()
file=open("data.pkl",'rb')
out2=pickle.load(file)
out3=pickle.load(file)
print(out1)
print(out2)
print(out3)

输出:

deque([(array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]))], maxlen=100)
deque([(array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5])), (array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5]))], maxlen=100)
deque([(0, 0, 0, 0, 0), (0, 0, 0, 0, 0), (0, 0, 0, 0, 0), (0, 0, 0, 0, 0), (0, 0, 0, 0, 0)], maxlen=100)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值