[python]pickle序列化存储

1.为什么要进行序列化存储

在程序运行过程中所有的变量都是存在内存中,一旦程序关闭或者电脑关机,内存中的所有数据都会丢失。为了能够继续使用,我们需要将数据存放在硬盘里。

我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。

序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。
反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。

2.如何进行序列化与反序列化

首先,我们尝试把一个对象序列化并写入文件:

import pickle
d = dict(name='Bob', age=20, score=88)

with open('data.pkl', 'wb') as ff:
    pickle.dump(d, ff)

此时,会在相同目录下产生一个‘data.pkl’文件,这个文件是人类不可读的。
with open() as是python中打开文件夹的一种操作,‘wb’是以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
关于python中open的用法和读写文件的操作,请分别访问博客教程了解。

序列化操作完成之后我们要进行反序列化:

with open('data.pkl', 'rb') as ff:
    data1 = pickle.load(ff)
    print(data1)

其中’rb’表示只读操作。
输出结果为:

{'name': 'Bob', 'age': 20, 'score': 88}

本文原载于我的简书博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值