pickle模块是用于序列化的,pickle用于python特有的类型和python的数据类型间进行转换,pickle提供四个功能dumps,dump(存取数据),loads,load(读出数据)
pickle可以存储什么类型的数据呢?
1、所有python支持的原生类型:布尔值、整数、浮点数、复数、字符串、字节、None
2、由任何原生类型组成的列表、元组、字典和集合
3、函数、类、类的实例
pickle的实质是什么?
pickle的实质就是利用一些算法将你的数据对象"腌制"成二进制文件,存储在磁盘上,当然也可以放在数据库或者通过网络传输到另一台计算机上
import pickle
data_list = ['aa', 'bb', 'cc']
data_tuple = ('aa', 'bb', 'cc')
data_dict = {'a': 97, 'b': 98, 'c': 99}
data_set = {'a', 'b', 'c'}
p_str = pickle.dumps(data_tuple) # dumps将数据通过特殊的形式转换为只有python语言认识的字符串
print(p_str) # 打印出b'x80x03Xx02x00x00x00aaqx00Xx02x00x00x00bbqx01Xx02x00x00x00ccqx02x87qx03.'
mes = pickle.loads(p_str) # loads将pickle数据转换为python的数据结构
print(mes) # 打印出('aa', 'bb', 'cc')
dump将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件,打开是乱码
with open('D:/test_pickle.pkl', 'wb') as f: # 必填参数file表示obj要写入的文件对象,file必须以二进制可写模式打开,即wb
pickle.dump(data_dict, f)
load从数据文件中读取数据,并转换为python的数据结构
with open('D:/test_pickle.pkl', 'rb') as f2: # 必填参数file必须以二进制可读模式打开,即rb
data2 = pickle.load(f2)
print(data2)