pickle模块实现了数据序列和反序列化。
序列化过程将文本信息转变为二进制数据流。当需要读取文件的时候,从硬盘中读取数据,然后再将其反序列化便可以得到原始的数据。
1.
pickle.dump(obj,file[,protocol])
将obj以二进制方式存储至文件.
file是以二进制方式打开的文件对象(wb/ab/rb+/wb+/ab+)
protocoly 是协议版本,有(0,1,2,3,4).(3,4)是在python3之后的版本。不写默认0
2 data=pickle.load(file) 从 file 文件指针内处开始读取一个字符串,并将它重构为原来的python对象。file必须以可读的二进制形式打开
import pickle
f=open('test3.txt','wb')
a=[234,434,54]
b=[2,4,3]
pickle.dump(a,f,4)
pickle.dump(b,f,-1)
f.close()
f=open('test3.txt','rb')
data1=pickle.load(f)
print(data1)
data2=pickle.load(f)
print(data2)
f.close()
#输出[234, 434, 54]
#[2, 4, 3]
3 b=pickle.dumps(obj) 以字节对象形式返回封装的对象,不需要写入文件中
4 obj=pickle.loads(bytes_object) 从字节对象中读取被封装的对象,并返回
import pickle
a=[234,434,54]
c=pickle.dumps(a)
print(c)
d1=pickle.loads(c)
print(d1)
#输出b'\x80\x03]q\x00(K\xeaM\xb2\x01K6e.'
#[234, 434, 54]
若pickle的是对象,在另一个程序中load时要import 包含类定义的py
#rest2.py
import pickle
class person:
def __init__(self,name):
self.name=name
def getvalue(self):
return self.name
def save(self,file):
pickle.dump(self,)
p=person('tisa')
f=open('test3.txt','wb')
pickle.dump(p,f,3)
f.close()
#test3.py
import pickle
import test2
f=open('test3.txt','rb')
data=pickle.load(f)
print(data.getvalue())
f.close()