pickle模块进行序列化:
import pickle
# 不能在文件中查看写入的内容
def foo():
print('ok')
list1 = [1, 2, 3, 5, 6, 7]
data = pickle.dumps(foo) # 将函数序列化并写入 支持很多数据类型
data = pickle.dumps(list1) # 列表 字典 函数 类 等
f = open('pickle', 'wb') # 2进制模式 写入文件
f.write(data)
f.close()
要点:
- pickle 支持函数,类,列表,字典等数据的序列化
- dumps() 只有这一个加载函数
- 以二进制形式进行序列化 'wb'
pickle模块进行反序列化:
import pickle
f = open('pickle', 'rb') # 2进制 模式读取
data = f.read()
data = pickle.loads(data) # 获取数据
# data() # 执行获取到的函数会报错,因为内存地址发生变化了
print(data) # 如果是列表 或字典 正常打印
要点:
- 注意,函数在反序列化后,由于内存地址发生变化,不能直接执行
- loads() 获取数据只有这一个函数
- 一定是二进制模式 'rb'