制心一处,无事不办.
什么是序列化,为什么需要序列化?
1.序列化是指可以把python中的数据,以文本或二进制的方式进行转换,并且还能反序列化为原来的数据
2.数据在网络中进行传输和存储时,需要以更加方便的方式进行
注意:在python中使用pickle和json需要 import json,pickle
一、内置模块-序列化-pickle
pickle模块提供的函数:
dumps() 序列化,可以把一个python的任意对象序列化成为一个二进制
pickle.dumps(vars)
loads() 反序列化,可以把一个序列化后的二进制数据反序列化为python的对象
pickle.loads(vars)
下面的dump和load方法将数据与文件连接了起来 dump() 序列化,把一个数据对象进行序列化并写入到文件中
参数一:需要序列化的数据对象
参数二:写入的文件对象
pickle.dump(vars,fp)
load() 反序列化,在一个文件中读取序列化的数据,并且完成反序列化
参数:文件对象
pickle.load(fp)**
##1.基本序列化与反序列化操作
_vars = ‘iloveyou’ #b’\x80\x04\x95\x0c\x00\x00\x00\x00\x00\x00\x00\x8c\x08iloveyou\x94.’
使用pickle.dumps方法进行序列化成为一个二进制的数据
_res = pickle.dumps(vars)
print(res,type(res))
_#使用loads方法进行反序列化
_res = pickle.loads(res)
print(res)
#如何把一个python数据进行序列化后写入文件?并且再次读取出来?#使用dumps loads 方法完成
#定义数据
vars = {‘name’:‘张三’,‘age’:22,‘sex’:‘男’}
#进行序列化
res = pickle.dumps(vars)
#写入文件
_with open(‘../0.test/data.txt’,‘wb’) as fp:
fp.write(res)
#读取文件中的反序列化的二进制文件,并完成反序列化
#打开文件进行读取
with open(‘../0.test/data.txt’,‘rb’) as fp:
res = fp.read()
_#进行反序列化
_vardict = pickle.loads(res)
print(vardict)
#使用pickle提供的load和dump完成以上写入文件并读取操作vars = {‘name’:‘张三’,‘age’:22,‘sex’:‘男’}
#写
_with open(‘../0.test/data.txt’,‘wb’) as fp:
pickle.dump(vars,fp)
#读
with open(‘../0.test/data.txt’,‘rb’) as fp:
res = pickle.load(fp)
print(res)
二、内置模块-序列化-json
什么是json?
json在互联网中又是一种通用的数据交换,数据传输,数据定义的一种数据格式
python中提供的json模块,可以把python数据对象,转为json格式的数据
_#以下语法格式定义的是一个 字典 的数据类型
_vardict = {“name”:“admin”,“age”:22}
_#使用json模块中的dumps方法进行 json格式的转换
_res = json.dumps(vardict)
print(res,type(res))
_#使用loads方法进行反序列化
_res = json.loads(res)
print(res,type(res))
_## dump 和 load 方法 与pickle的是一个意思
#写
_vardict = {“name”:“admin”,“age”:22}
with open(‘../0.test/data.json’,‘w’) as fp:
json.dump(vardict,fp)
#读
with open(‘../0.test/data.json’,‘r’) as fp:
new = json.load(fp)
print(new)