pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。
pickle模块只能在Python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化。
一、pickle模块中常用的方法
1、pickle.dump(obj, file, protocol=None,)
作用:序列化对象,并将结果数据流写入到文件对象中。
必填参数obj表示将要封装的对象
必填参数file表示obj要写入的文件对象,file必须以二进制可写模式打开,即“wb”
可选参数protocol表示告知pickler使用的协议,支持的协议有0,1,2,3,默认的协议是添加在Python 3中的协议
2、pickle.load(file,*,fix_imports=True, encoding="ASCII", errors="strict")
作用:将文件中的数据解析为Python对象。
必填参数file必须以二进制可读模式打开,即“rb”,其他都为可选参数
3、pickle.loads(bytes_object)
作用:从字节对象中读取被封装的对象
bytes_object必须是字节对象
二、 pickle模块可能出现三种异常:
1. PickleError:封装和拆封时出现的异常类,继承自Exception
2. PicklingError: 遇到不可封装的对象时出现的异常,继承自PickleError
3. UnPicklingError: 拆封对象过程中出现的异常,继承自PickleError
三、实例
import pickle
#准备数据
data = ['天气','心情','想法','行动','1','2','3','4']
data = {'天气':'晴','心情':'极好的','想法':'美妙的','行动':'及时的','1':'1111','2':'2222','3':'3333','4':'4444'}
data = '永远不要跟脑残的人吵架,他会把你的智商拉低到跟他一样的水平,然后用丰富的经验打败你。'
#写入数据
f_name = open('data.pkl','wb')
pickle.dump(data,f_name)
f_name.close()
#将文件中数据直接读取
r_file = open('data.pkl','rb')
r = pickle.load(r_file)
print(r)
#将数据以字节读取出来,然后使用loads从字节对象中读取被封装的对象
r_file = open('data.pkl','rb')
r = pickle.loads(r_file.read())
print(r)