什么叫序列化?

序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes。

把字符转换成内存数据类型,叫反序列化。

为什么要序列化?

你打游戏过程中,打累了,停下来,关掉游戏、想过2天再玩,2天之后,游戏又从你上次停止的地方继续运行,你上次游戏的进度肯定保存在硬盘上了,是以何种形式呢?游戏过程中产生的很多临时数据是不规律的,可能在你关掉游戏时正好有10个列表,3个嵌套字典的数据集合在内存里,需要存下来?你如何存?把列表变成文件里的多行多列形式?那嵌套字典呢?根本没法存。所以,若是有种办法可以直接把内存数据存到硬盘上,下次程序再启动,再从硬盘上读回来,还是原来的格式的话,那是极好的。

用于序列化的两个模块

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

import pickle
data = {'k1':123,'k2':'Hello'} # pickle.dumps 将数据通过特殊的形式转换位只有python语言认识的字符串
p_str = pickle.dumps(data)
print(p_str) #pickle.dump 将数据通过特殊的形式转换位只有python语言认识的字符串,并写入文件
with open('D:/result.pk','wb',encoding='utf8') as fp:
pickle.dump(data,fp) import json
# json.dumps 将数据通过特殊的形式转换位所有程序语言都认识的字符串
j_str = json.dumps(data)
print(j_str) #pickle.dump 将数据通过特殊的形式转换位只有python语言认识的字符串,并写入文件
with open('D:/result.json','wb',encoding='utf8') as fp:
json.dump(data,fp)

json vs pickle:

JSON:

优点:跨语言、体积小

缺点:只能支持int\str\list\tuple\dict

Pickle:

优点:专为python设计,支持python所有的数据类型

缺点:只能在python中使用,存储数据占空间大

最新文章

  1. Java三大框架 介绍
  2. java 中 return 的两种常见的用法
  3. C# Winfrom小黄鸡功能调用
  4. Microsoft Expression Blend 4制作简单的按钮
  5. python参考手册 Read
  6. 利用ACE 自己实现的线程池
  7. (转)织梦dedecms后台发布文章提示“标题不能为空”
  8. Linux下添加磁盘创建lvm分区
  9. Eclipse 整合cvs教程及遇到的问题
  10. asp读取指定目录下的文件名
  11. SQL 数据库语言分析总结(三)
  12. python学习日记(继承和多态)
  13. Server response error code:404, error:{"ret":-1, "msg":"invalid appkey"}
  14. 独家!DevExpress VCL Controls 2019发展路线图(No.1)
  15. vue实现一个简易Popover组件
  16. MongoDB的分片集群搭建
  17. Oracle 备份表数据
  18. 关于Gevent的使用指北
  19. Adobe Illustrator for Mac(矢量图处理软件)破解版安装
  20. Jenkins发布后自动通知【钉钉】

热门文章

  1. Jexus 5.8.2
  2. wpf ComboBox的SelectionBoxItem相关依赖属性
  3. winform代码生成器(一)
  4. Jquery each跳出循环
  5. Random类、ThreadLocalRandom类
  6. vue-cli3项目优化首页加载过慢的一些心得
  7. vue-cli3项目中解决动态引入图片img404的问题
  8. Outlook 2016 自动发送/接收无法正常工作
  9. Html style="visibility:hidden"与style="display:none"的区别
  10. Windows Experience Index