序列化相关

1. json

  • 应用场景:

json模块主要用于处理json格式的数据,可以将json格式的数据转化为python的字典,便于python处理,同时也可以将python的字典或列表等对象转化为json格式的数据,便于跨平台或跨语言进行数据交互

  • 功能:

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

    • Python 编码为 JSON 类型转换对应表:

    Python JSON
    dict object
    list, tuple array
    str string
    int, float, int- & float-derived Enums number|
    True true
    False false
    None null
    • JSON 解码为 Python 类型转换对应表:
    JSON Python
    object dict
    array list
    string str
    number (int) int
    number(real) float
    true True
    false False
    null None
  • 具体应用

    • dumps 和 loads 用于python对象和字符串间的序列化和反序列化

    dumps:将python 基本数据类型转化为json格式数据类型
    loads:将json格式数据类型转化为python数据类型

    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #pyversion:python3.5 #owner:fuzj import json s1 = '{"key1":"value1"}' #字符串只能是这个格式的,才能被json转换 通过loads进行反序列化时,必须使用双引号  d1 = {'key2':'value2'} s2 = json.loads(s1) #使用loads反序列化 print('s1的内容:',s1) print("s1的类型:",type(s1)) print('s2的内容:',s2) print("s2的类型:",type(s2)) d2 = json.dumps(d1) print('d1的内容:',d1) print("d1的类型:",type(d1)) print('d2的内容:',d2) print("d2的类型",type(d2)) 
    
    输出结果: s1的内容: {"key1":"value1"} s1的类型: <class 'str'> s2的内容: {'key1': 'value1'} s2的类型: <class 'dict'> #经loads处理之后,str变味dict d1的内容: {'key2': 'value2'} d1的类型: <class 'dict'> d2的内容: {"key2": "value2"} d2的类型 <class 'str'> #经dumps处理之后,dict变为str

    • dump 和load 用于对文件进行序列化和反序列化

    dump:主要用于json文件的读写,json.dump(x,f),x是对象,f是一个文件对象,这个方法可以将json字符串写入到文本文件中
    load:加载json文件

    ```
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*- #pyversion:python3.5 #owner:fuzj import json s1 = '{"key1":"value1"}' #字符串只能是这个格式的,才能被json转换 通过loads进行反序列化时,必须使用双引号 d1 = {'key2':'value2'} json.dump(d1,open('序列化.txt','w')) #将s1序列化,并写入文件 e1 = json.load(open('序列化.txt','r')) #读取json文件 print("e1的类型:",type(e1)) print('e1的内容:',e1) ``` 输出结果: e1的类型: <class 'dict'> e1的内容: {'key2': 'value2'}

2. pickle

  • 应用场景

pickle模块实现了基本的数据序列和反序列化,和json的功能类似。
通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储,也可以简单的将字符进行序列化
通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象,也可以将字符进行反序列化。和json不同的是:json 更适合跨语言 可以处理字符串,基本数据类型;pickle python专有,更适合处理复杂类型的序列化

  • 功能
    pikle模块提供 dumps loads dump load四个基本功能

  • 具体应用

    • dumps 和loads 用于python对象和字符串间的序列化和反序列化

    dumps 和json.dumps功能一样,但是以字节对象形式返回封装的对象
    loads和json.loads功能一样,从字节对象中读取被封装的对象,并返回

    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #pyversion:python3.5 #owner:fuzj import pickle s1 = '{"key1":"value1"}' #字符串只能是这个格式的,才能被json转换 通过loads进行反序列化时,必须使用双引号  d1 = {'key2':'value2'} s3 = pickle.dumps(s1) print('s1的内容:',s1) print("s1的类型:",type(s1)) print('s3的内容:',s3) print("s3的类型:",type(s3)) d3 = pickle.loads(s3) print('d1的内容:',d1) print("d1的类型:",type(d1)) print('d3的内容:',d3) print("d3的类型",type(d3)) 输出结果: s1的内容: {"key1":"value1"} s1的类型: <class 'str'> s3的内容: b'\x80\x03X\x11\x00\x00\x00{"key1":"value1"}q\x00.' s3的类型: <class 'bytes'> #dumps处理之后返回的是字节类型 d1的内容: {'key2': 'value2'} d1的类型: <class 'dict'> d3的内容: {"key1":"value1"} d3的类型 <class 'str'>

    • dump 和load 用于对文件进行序列化和反序列化.python数据持久化用的比较多

      • pickle.dump(obj, file, [,protocol])
          注解:将对象obj保存到文件file中去。
          protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII码表示;1:老式的二进制协议;2:2.3版本引入的新二进制协议,较以前的更高效。其中协议0和1兼容老版本的python。protocol默认值为0。
          file:对象保存到的类文件对象。file必须有write()接口, file可以是一个以'w'方式打开的文件或者一个StringIO对象或者其他任何实现write()接口的对象。如果protocol>=1,文件对象需要是二进制模式打开的。

      • pickle.load(file)
          注解:从file中读取一个字符串,并将它重构为原来的python对象。
          file:类文件对象,有read()和readline()接口

    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #pyversion:python3.5 #owner:fuzj import json import pickle s1 = '{"key1":"value1"}' #字符串只能是这个格式的,才能被json转换 通过loads进行反序列化时,必须使用双引号  d1 = {'key2':'value2'} pickle.dump(s1,open('序列化.txt','wb')) #注意需使用二进制方式写入文件 e2 = pickle.load(open('序列化.txt','rb')) #需使用二进制方式读取文件 print("e2的类型:",type(e2)) print('e2的内容:',e2) 输出结果: e2的类型: <class 'str'> e2的内容: {"key1":"value1"}

转载于:https://www.cnblogs.com/fmgao-technology/p/9109617.html

python序列化模块json和pickle相关推荐

  1. python建立数据库并序列化_Python之数据序列化(json、pickle、shelve)

    一.python类型数据和JSON数据格式互相转换 pthon 中str类型到JSON中转为unicode类型,None转为null,dict对应object 二. 序列化/反序列化 将对象转换为可通 ...

  2. os模块,序列化模块,json模块,pickle模块

    OS模块 把路径中不符合规范的/改成操作系统默认的格式 1 path = os.path.abspath("D:\dayday\day 19\3.py") 2 print(path ...

  3. python内置json模块_python的常用内置模块之序列化模块json

    #什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. '''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现在我们能想到的方法就是存在文 ...

  4. python序列化模块struct_Python-序列化模块-json-62

    序列化模块 什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现在我们能想到的方法就是存 ...

  5. python 序列化模块_Python进阶-XII serialize(序列化)、序列化模块

    一.serialize 序列化 1.什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现 ...

  6. python序列化模块struct_Python进阶-XII serialize(序列化)、序列化模块

    一.serialize 序列化 1.什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现 ...

  7. Python—序列化模块

    文章目录 序列化模块 序列化 json json优缺点 四个功能 pickle pickle优缺点 模块提供四个功能 序列化模块 序列化 概念:将一个对象从内存中转换为可存储(字符串类型)或者可传输( ...

  8. python csv、json、pickle数据持久化

    1. csv/json/pickle基本概念 csv:CSV(Comma Separated Values)格式是电子表格和数据库最常见的导入和导出格式.用文本文件形式储存的表格数据,可以使用exce ...

  9. 序列化模块--json模块--pickle模块-shelve模块

    什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传播到远程,因为硬盘或网络传输时只能接受bytes 例: 把内存数据 转成字符 # data ={# 'roles ...

最新文章

  1. TCP/IP入门(4) --应用层
  2. esp8266 防掉线方法_esp8266 smartconfig-智能配网分析和使用及注意事项
  3. Caffe-SSD(single-shot-multibox)在Windows平台下的配置(CPU和GPU)与训练记录
  4. Apache虚拟目录和多端口多主机名配置
  5. android 原生分享界面_这些技巧和习惯,让你的原生 Android 更好用(上篇)
  6. sysbench压力工具报错:
  7. Java基础:常用的API
  8. bcdedit无法打开启
  9. android开发界面设计工具,21个免费的UI界面设计工具、资源及网站
  10. Leetcode刷题-459:重复的子字符串
  11. time.h头文件解析
  12. 关于NullPointerException的小实例
  13. gaussian用法 matlab_matlab中的twomodegauss函数-双峰高斯函数
  14. android登录界面优化,Android 对登陆页面的美化(一)
  15. npm介绍与cnpm介绍
  16. 【控制】拉普拉斯拉氏变换原理分解理解
  17. 刘海洋《LaTex入门》学习笔记4
  18. HTML5 JS录音功能,简单介绍recorder.js 基于Html5录音功能的实现
  19. Unity批量预设体替换材质球
  20. 君子务本,本立而道生;敬事而信,直道而事人

热门文章

  1. Network | 802.1x
  2. python soup提取叶子标签_python3用BeautifulSoup抓取div标签
  3. 框架原理第一讲,熟悉常用的设计方式.(以MFC框架讲解)
  4. 插入ts以及判断列是否存在(支持多数据库)
  5. 自适应高度Textarea
  6. BAT教程 第三节(FOR命令中的变量)
  7. SM4密码算法(附源码)
  8. 快速双边滤波在High-Dynamic Range(HDR)图像显示中的应用。
  9. 单点登录与权限管理本质:cookie安全问题
  10. OSChina 周六乱弹 —— 老用户与狗