序列化:

把不能够直接存储的数据变成字节流(bytes)保存在文件,

进行持久化存储

反序列化:

任何数据都可以转成字节流(bytes)进行存储:

1. dumps

把任意对象序列化

 li = [1, 2, 4]
res = pickle.dumps(li) # 返回bytes
print(res, type(res))

2. loads

把字节流转换为原本的数据

 li1 = pickle.loads(res)

 # 转换回的数据类型为list
print(li1, type(li1))

3. dump(obj, f)

将数据写入文件

 with open('1.txt', 'wb') as f:
li = [1, 2, 4, 5] # 将li转换成bytes, 使用f句柄写入文件, 没有返回值
pickle.dump(li, f)

4. load(f)

读取写入文件中的字节流数据, 并将其转换成原本的数据

 with open('1.txt', 'rb') as f:
res = pickle.load(f) # 读取f中写入的数据对象, 将bytes转换成原本的数据类型
print(res, type(res))

序列化迭代器

 iter1 = iter(range(5))
res = pickle.dumps(iter1) iter2 = pickle.loads(res)
print(iter2, type(iter2))

多数据对象使用pickle写入文件

 li = [1, 2, 4, 5]
tup = (1, 2, 4, 5)
dic = {1:2, 2:3, 4:3}
s = 'abc'
setvar = {1, 2, 4} with open('2.txt', 'wb') as f:
pickle.dump(li, f)
pickle.dump(tup, f)
pickle.dump(setvar, f)
pickle.dump(dic, f)
pickle.dump(s, f) with open('2.txt', 'rb') as f:
# f也是一个迭代器,
# load相当于next, 不断调用f
# 返回反序列化后的数据
for i in range(5):
res = pickle.load(f)
print(res, type(res))

最新文章

  1. redis学习教程地址
  2. sql中文日期格式转换(xxxx年x月x日)
  3. rails下自动更新静态文件的gem包
  4. iOS 三方库fmdb 的使用
  5. 自动获取socket链接状态
  6. PHP+微信分享自定义小图标
  7. 021ARM处理器工作模式
  8. java语法:字符串数组的赋值
  9. linux下安装redis和phpredis扩展
  10. 关于JS数组的栈和队列操作
  11. asp.net导入后台代码
  12. MassTransit 学习
  13. Recent papers on Action Recognition | 行为识别最新论文
  14. php array_rand()函数从数组中随机选择一个或多个元素
  15. C# winIO32位,64位的使用(运行时要用管理员身份)
  16. docker 部署django项目(nginx + uwsgi +mysql)
  17. 「CodePlus 2017 11 月赛」大吉大利,晚上吃鸡!(dij+bitset)
  18. Linux启动与禁止SSH用户及IP的登录
  19. SparkR:数据科学家的新利器
  20. supervisor初试

热门文章

  1. win10磁盘/cpu占用100%问题
  2. 上传文件代码报错,java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory
  3. 对C语言指针的理解
  4. angularjs - 自定义指令(directive)
  5. MHA-Atlas-MySQL高可用集群
  6. Ajaxpro使用的方法
  7. [cf1025D][区间dp]
  8. Linux下搭建测试环境
  9. APIPA
  10. CodeForce 517 Div 2. C Cram Time