Python中的序列化和反序列化

为什么要序列化

内存中的字典、列表、集合以及各种对象,如何保存到一个文件中。

设计一套协议,按照某种规则,把内存中的数据保存到文件中,文件是一个个字节序列。所以必须把数据额转换为字节序列,输出到文件,这就是序列化,反之,从文件的字节 序列恢复到内存中,就是反序列化。

 

1、定义

Serialization系列化,将内存中对象存储下来,把他变成一个个字节。二进制。

deSerialization反序列化,将文件的一个个字节到内存中。

序列胡保存到文件就是持久化。

可将数据序列化后持久化,或者网络传输,也可以将文件中或者网络接受到的字节序列反序列化。

2、pickle库

Python中的序列化、反序列化模块

dumps对象序列化为bytes对象

dump对象序列化到文件对象,就是存入到文件。

loads从bytes对象反序列化。

load对象反序列化,从文件读取数据.

##

import pickle
filename = 'ser'
x= 'a'
y = '100'
z = '100'

with open(filename,'wb') as f:
    pickle.dump(x,f)
    pickle.dump(y,f)
    pickle.dump(z,f)

with open(filename,'rb')as f:
    for _ in range(3):
        a = pickle.load(f)
        print(a,type(a))

 

 

 

还原的时候不一定是完全一样的。

序列化应用:一般来说,本地序列化的情况,应用较少,大多数都是用在网络传输上面的。

将数据序列化后通过网络传输到远程节点,远程服务器上的服务将接受到的数据反序列化后,就可以使用了。

但是,要注意的是,远程接收端,反序列化时候必须有对应的数据类型,否则就会报错。尤其是自己定义的类。必须远程得有一致的定义。

3、Json

1)是一种轻量级的数据交换格式,基于ECMAScript(w3c制定的JS规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。

2)数据类型

双引号引起来的字符串,数值,true和flase,null,对象,数组,这些都是值。

字符串

由双引号包围起来的任意字符的组合,可以有转义字符。

数值:有正负,整数,浮点数。

对象:无序的键值对的集合。

格式:{key1:value1,.....keyn:valuen}

Key必须是一个字符串,需要双引号包围这个字符。

Value可以是任意合法的值。

 

数组:有序的值的集合

格式:[value1,....valuen]

猜你喜欢

转载自www.cnblogs.com/dianziyihao/p/12446624.html