python学习笔记-tip51(io编程--序列化)

引言

在程序运行过程中,所有的变量都是存在内存中的,比如我们随意定义的dict,他是存活在内存中的

  d=dict(name='xiaoming',age=20,score=10)

但是,一旦程序结束,变量所占用的内存都会被系统所回收,如果我们在程序中给dict中的name重新设置了新值,那么当程序退出,再次打开时,name又开始执行代码,变成了原来的值。

这个时候,我们可能就需要将某些内存中的数据,固化到本地磁盘上了。
这种把变量从内存中变成可存储或者传输的过程称之为序列化,在python中称为「pickling」。
还记得在java中序列化叫做「serialization」,其实是一个意思。

经过序列化后,就可以把序列化之后的内容写入到磁盘,或者通过网络传输到别的机器上去。

反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即「unpickling」
python 提供了pickle模块来实现序列化

pickle模块

我们先尝试把一个对象序列化存入文件


python学习笔记-tip51(io编程--序列化)_第1张图片

本例中,我们发现使用到了pickle中的两个方法

  • dumps(变量/对象)
    这个方法能够将变量或者对象转化成bytes,然后我们就可以把这个bytes写入到文件中去
    *dump(变量/对象,文件)
    这个方法更加简便,直接将对象序列化后写入到文件中去
    根据需要使用即可

现在我们反过来,将对象从磁盘读取到内存,看看怎么操作
我们来看下示例

第一个为pick()写法
python学习笔记-tip51(io编程--序列化)_第2张图片

第二个为picks()写法
python学习笔记-tip51(io编程--序列化)_第3张图片

这样一对比,发现还是pick()更加合适这个需求

ok,python的序列化(「pickling」)和反序列化(「unpickling」)
就到这里啦~,是不是很简单,大家加油练起来吧

你可能感兴趣的:(python学习笔记-tip51(io编程--序列化))