制心一处,无事不办.

什么是序列化,为什么需要序列化?
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)