专栏名称: 爬虫俱乐部
Stata技术控,编程技术咨询,数据讨论与分享,编程和实证培训。
目录
相关文章推荐
三峡小微  ·  高风速潮汐带上的绿色电站 ·  3 小时前  
三峡小微  ·  十秒扎根一棵树 一键灌溉万亩沙 ·  昨天  
三峡小微  ·  @党员干部 这些饭,吃不得! ·  2 天前  
51好读  ›  专栏  ›  爬虫俱乐部

pickle 更快的数据储存方式

爬虫俱乐部  · 公众号  ·  · 2018-06-19 10:15

正文

请到「今天看啥」查看全文


) as f:
for name in classlist:
f.write(name+ '\n' )

通过使用读写函数,我们将该列表的内容分行写入一个名为 classlist 的列表中。当下次使用时再分行读入。

但python存在着专门读写python对象的方法,那就是 pickle 模块,用于解决对象的序列化与反序列化。所谓 序列化 指的是将python的对象转化为一种专门的 二进制 字符串,并将其以二进制形式写入一个文件中,而 反序列化 则是读取该二进制文件并将其 转化回对象本身 。这样子做有什么好处呢?最显而易见的是它的存储与读写速度会非常的快,后面我们会给出示例说明。其次创立专门的对象数据文件,可以防止数据被不小心修改,产生问题。

pickle模块在标准库内,引入pickle模块很简便。

import pickle

pickle dump

将对象转化为二进制存储文件使用的是pickle模块的 dump 方法,现在我们将一个长度为 100 的列表序列化并保存。

import random
import pickle

a = [random.random() for x in range(100)]

with open("alist.pkl",'wb') as f:
    pickle.dump(a,f)

可以看到,与一般的文件读写不同的是,我们的读写方式为 wb ,也就是二进制方式书写, pickle.dump 方法接收两个必需的参数, 第一个 是要序列化的 对象 第二个 是二进制文件 句柄 。执行完毕后,当前工作目录会多出来一个名为 alist.pkl 的文件,需要说明的是,pkl只是一个形式上的后缀名,你可以写成任何其它字符,但为了显示它是一个pickle序列化的数据对象,我们使用 pkl 作为标记。

pickle load

有读入就会有读取,将pkl文件读取为对象使用的是pickle模块的dump方法,现在我们将刚刚存储的数据文件读取

with open("alist.pkl",'rb') as f:
    abak = pickle.load(f)

通过这个样子即可反序列化pkl文件,变成python的列表对象。

更快的速度与更小的体积







请到「今天看啥」查看全文