PythonAdvanced

用pickle读写对象(Python)

2019-04-17  本文已影响0人  Ellipsis2049

用pickle模块来保存和加载对象。

pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。
pickle模块只能在python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化,pickle序列化后的数据,可读性差,人一般无法识别。

'''
将名为lyst的列表中对象保存到一个名为item.dat的文件中。
我们不需要知道列表中的对象是什么类型,有多少个对象。
python负责所有的转换细节。
也可以将整个列表写入一个文件中,而不是将其每个对象写入,
但是对那些基于链表结构的集合,我们不能这么做。
'''
import pickle

lyst = [60, "a string object", 2049]
fileobj = open('items.dat', 'wb')
for item in lyst:
    pickle.dump(item, fileobj)  # 保存对象用pickle.dump函数
fileobj.close()

任何对象都可以被封装(pickled),然后再保存到文件中。然后,随着你将其从文件中加载到程序,对它们进行拆封(unpickled)。pickle.dump()的第一个参数是要存储到文件中的对象,第二个参数是一个文件对象。

'''
pickle.load(),在文件抵达末尾时会引发一个异常。用try-except捕获
'''
import pickle
lyst = list()
fileobj = open('items.dat', 'rb')
while True:
    try:
        item = pickle.load(fileobj)
        lyst.append(item)
    except EOFError:
        fileobj.close()
        break
print(lyst)

pickle.load()将封装的对象从一个文件加载到一个程序中。

上一篇下一篇

猜你喜欢

热点阅读