1.什么是序列化和反序列化

序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输

反序列化就是硬盘中或者网络传来的一种数据格式转换成内存中数据结构

2.为啥有呢?

  1.可以保存程序的运行状态(比如游戏升级,打到一半关闭程序,那么,你游戏人物的等级和状态不会清空,而是保留,等待你下次在再玩)

2.数据的跨平台交互(Java python跨多平台)

3.python 有两种序列化命令

  json         跨多平台

            优点:

                    跨平台性强

            缺点:

                    只能支持/对应的python比分的数据类型

    pickle       pyhton内置 

            优点:

                    可以支持/对应索引python的数据类型

             缺点:

                    只能被python识别,不能跨平台

对应表:

    序列化用法:        把内容写入一个文件里,容易区分               # json格式不能识别单引号,全都是双引号

import json

dic={‘name’:‘egon’,‘age’:18}

1.  序列化:内存中的数据类型------》中间格式json

   1.序列化得到    json——str

  序列化: json_str=json.dumps(dic)

    2.把json_str写入文件

with open ('db.json','wt',encoding='utf-8')as f :

f.write(json_str)

#1和2合为一步
with open('db.json','wt',encoding='utf-8') as f:

    json.dump(dic,f)

# print(json_str,type(json_str))    

反序列化用法

  2.用json反序列化            中间格式json-----》内存中的数据类型

   反序列化 # json.loads('{"name":"egon"}')

    # 用json反序列化                                                 # json格式不能识别单引号,全都是双引号
    # with open('db.json','rt',encoding='utf-8') as f:
    #     l=json.load(f)
    #     print(l)

   # 用eval反列化
    # with open('db.json','rt',encoding='utf-8') as f:
    #     s=f.read()                         #s ='[1, true, null]'
    #     dic=eval(s)                     #eval('[1, true, null]')   注意json 和eval 在python中的True False的区别

    #     print(dic['name'])

二.  pickle用法 跟josn差不多

    import pickle

dic={'a':1,'b':2,'c':3}

1 序列化

    # pkl=pickle.dumps(dic)
    # # print(pkl,type(pkl))
    #
  2 写入文件
    # with open('db.pkl','wb') as f:

    #     f.write(pkl)

1和2可以合作一步
# with open('db.pkl','wb') as f:

#     pickle.dump(dic,f)

2.反序列化

1、从文件中读取pickle格式
    # with open('db.pkl','rb') as f:
    #     pkl=f.read()
2、将json_str转成内存中的数据类型
    # dic=pickle.loads(pkl)
    # print(dic['a'])

1和2可以合作一步
    # with open('db.pkl','rb') as f:
    #     dic=pickle.load(f)
    #     print(dic['a'])

转载于:https://www.cnblogs.com/Marcki/p/10111956.html

python之序列化与反序列化用法介绍json、pickle相关推荐

  1. Python Pillow(PIL)库的用法介绍(二)

    Python Pillow(PIL)库的用法介绍(二) 在上一篇文章中介绍了Pillow库的一些基本用法,参考:https://blog.csdn.net/weixin_43790276/articl ...

  2. python序列化和反序列化_Python 中 json 数据序列化和反序列化

    1.Json 定义 定义:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.JSON 的数据格式其实就是 python 里面的字典格式,里 ...

  3. Python的序列化与反序列化

    序列化和反序列化可以大致分为两类:文本序列化和二进制序列化.比如python提供的pickle库,他就是基于二进制方式的序列化.而json则是文本方式的序列化,需要遵守相应的文件格式. 由于pickl ...

  4. python的序列化和反序列化

    1. 什么是序列化? 当程序运行时,所有的变量或者对象都是存储到内存中的,一旦程序调用完成,这些变量或者对象所占有的内存都会被回收.而为了实现变量和对象持久化的存储到磁盘中或在网络上进行传输,我们需要 ...

  5. XML的序列化和反序列化 详细介绍

    为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...

  6. avro 序列化java_Avro 对象序列化与反序列化,及转Json对象序列化处理

    Avro 工具类 序列化与反序列化 public class AvroHelper { public  byte[]serializeAvroToByteArray(List dcs) { try { ...

  7. c语言josn序列化和反序列化,Flutter 中 JSON 的序列化和反序列化

    前言 Flutter 中没有类似于 Java 中 Gson/Jackson 这样的 JSON 序列化库. 因为这些库都是通过反射实现的,而 Flutter 中不支持反射. 其实 Dart 是支持反射的 ...

  8. Python基础 day4 迭代器生成器 装饰器 Json pickle 数据序列化 软件目录结构规范 作业:ATM项目开发...

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 列表生成器 1.列表生成式,迭代器&生成器 列表生成式 孩子, ...

  9. python语言入门r_小结:jieba分词的Python与R语言基础用法介绍

    当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 人们说话不是一个词一个词崩出来的,文章也就由句子组成.要想让机器识别美文,体会中华名族汉语的博大精深,不是不可能.但是,首先需要将其转化成其 ...

最新文章

  1. python检索地址_35.leetcode题目讲解(Python): 搜索插入位置
  2. mysql5.7导入数据的权限问题
  3. php-fpm 无法运行cli,linux-怎样让php在cli与fpm环境下运行时加载不同的扩展?
  4. 【Linux】/dev/null 21 详解
  5. e2200网卡驱动 linux,Linux驱动修炼之道-驱动中一些常见的宏
  6. 多系统服务器数据备份软件,护卫神好备份系统
  7. SQL Server性能优化案例报告
  8. 已解决:mysql: [Warning] Using a password on the command line interface can be insecure.
  9. 设计模式(13)——构建者模式(Builder)
  10. 基于Springboot实现汽车4S店销售管理系统
  11. 路由器(无线桥接)中继模式遇到无法上网的解决方案
  12. Elasticsearch密码设置及其后续问题解决
  13. Java8 Stream,过分丝滑!
  14. 儒家文化专题数据:各地级市-儒家学校、学堂孔庙数据量
  15. 应用实践 | Apache Doris 在网易互娱的应用实践
  16. 微信公众号运营助手,可以在手机上回复粉丝留言
  17. 国外开源电子商务平台
  18. Unity2020找不到Device Simulator
  19. 东南大学银行账号信息
  20. 让人头疼的哈夫曼树与编码

热门文章

  1. java eclipse svn_[Java教程]Eclipse 安装 SVN 的在线插件
  2. JAVA实现1到100的平方根之和_手算平方根和基于 Java BigInteger 的大整数平方根的实现...
  3. Java中六种List集合循环遍历取值
  4. Python随机梯度下降法(一)
  5. js未知数加已知数的结果数,三者的每个数字不重复
  6. typecho 去掉index.php,Typecho设置伪静态去掉url中的index.php
  7. Java Web现代化开发:Spring Boot + Mybatis + Redis二级缓存
  8. TextView的跑马灯效果(AS开发实战第二章学习笔记)
  9. stl 优先队列(堆)
  10. 如何反编译.apk(注:CSDN上提供的资源过时了,都用不了)