正文
)
as
f:
for
name
in
classlist:
f.write(name+
'\n'
)
通过使用读写函数,我们将该列表的内容分行写入一个名为
classlist
的列表中。当下次使用时再分行读入。
但python存在着专门读写python对象的方法,那就是
pickle
模块,用于解决对象的序列化与反序列化。所谓
序列化
指的是将python的对象转化为一种专门的
二进制
字符串,并将其以二进制形式写入一个文件中,而
反序列化
则是读取该二进制文件并将其
转化回对象本身
。这样子做有什么好处呢?最显而易见的是它的存储与读写速度会非常的快,后面我们会给出示例说明。其次创立专门的对象数据文件,可以防止数据被不小心修改,产生问题。
pickle模块在标准库内,引入pickle模块很简便。
import pickle
将对象转化为二进制存储文件使用的是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
作为标记。
有读入就会有读取,将pkl文件读取为对象使用的是pickle模块的dump方法,现在我们将刚刚存储的数据文件读取
with open("alist.pkl",'rb') as f:
abak = pickle.load(f)
通过这个样子即可反序列化pkl文件,变成python的列表对象。