序列化相关

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"}

python序列化模块json和pickle的更多相关文章

  1. python序列化模块 json&&pickle&&shelve

    #序列化模块 #what #什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程叫做序列化. #why #序列化的目的 ##1.以某种存储形式使自定义对象持久化 ##2.将对象从一个地方传递 ...

  2. python中序列化模块json和pickle

    json模块:json是第三方包,不是系统内置模块,以字符串序列 常用操作有: json.dumps() # 将变量序列化,即将功能性字符转化为字符串 例: >>> import j ...

  3. Python序列化之json与pickle

    1.json介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...

  4. python 序列化之JSON和pickle详解

    JSON模块 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类 ...

  5. Python中模块json与pickle的功能介绍

    json & pickle & shelve 1. json的序列化与反序列化 json的使用需要导入该模块,一般使用import json即可. json的序列化 方法1:json. ...

  6. 常用模块一(os模块、序列化模块(json和pickle))

    一.os模块 os模块是与操作系统交互的一个接口. import os # 和文件和文件夹的操作有关 os.makedirs('dirname1/dirname2') # 可生成多层递归目录 os.r ...

  7. 20,序列化模块 json,pickle,shelve

    序列化模块 什么叫序列化? 将原本的字典,列表等内容转换成一个字符串的过程叫做序列化. 序列化的目的? 数据结构 通过序列化 转成 str. str 通过反序列化 转化成数据结构. json: jso ...

  8. 2019-7-18 collections,time,random,os,sys,序列化模块(json和pickle)应用

    一.collections模块 1.具名元组:namedtuple(生成可以使用名字来访问元素的tuple) 表示坐标点x为1  y为2的坐标 注意:第二个参数可以传可迭代对象,也可以传字符串,但是字 ...

  9. python 序列化模块之 json 和 pickle

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,支持不同程序之间的数据转换.但是只能转换简单的类型如:(列表.字典.字符串. ...

随机推荐

  1. lecture1-NN的简介

    这是DL的发明人Hinton在多伦多大学的2013年冬季教授de课程,并将视频分享到coursera网站上.其中不但有视频,也有课件,但是Hinton主页上还有他上课的课后问题,Hinton告诉学生这 ...

  2. opencv6.5-imgproc图像处理模块之轮廓

    接opencv6.4-imgproc图像处理模块之直方图与模板 这部分的<opencv_tutorial>上都是直接上代码,没有原理部分的解释的. 十一.轮廓 1.图像中找轮廓 /// 转 ...

  3. 虚拟机开机提示Operating System not found解决办法

    为了更好体验windows更多操作系统,有些用户会在VMware虚拟机中安装XP.win7或win8等等系统,有用户反映在虚拟机中安装XP开机后提示"Operating System not ...

  4. 深入理解计算机系统(1.2)---hello world的程序是如何运行的

    在写本章的内容之前,LZ先做个小广告.其实也不算是什么广告,就是LZ为了和各位猿友交流方便,另外也确实有个别猿友留言或者在博客里发短消息给LZ要联系方式.因此LZ斗胆建立了一个有关<深入理解计算 ...

  5. MATLAB中白噪声的WGN和AWGN函数的使用

    MATLAB中白噪声的WGN和AWGN函数的使用如下: MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一 信号 ...

  6. MSSQL 问题集锦

    [1]关于SQL Server数据库连接字符串的特殊参数说明 MultipleActiveResultSets和Mars_Connection同义,指定此数据库连接是否复用数据库内已建立的相同用户的连 ...

  7. HTTP Pipeline

    什么是HTTP Pipeline http管线化是一项实现了多个http请求但不需要等待响应就能够写进同一个socket的技术,仅有http1.1规范支持http管线化,1.0并不支持:采用管线化的请 ...

  8. Beta项目冲刺 --第一天

    新的开始.. 队伍:F4 成员:031302301 毕容甲 031302302 蔡逸轩 031302430 肖阳 031302418 黄彦宁 会议内容: 1.站立式会议照片: 2.项目燃尽图 3.冲刺 ...

  9. 从 Microsoft SQL Server 迁移到 Oracle

    来源于:http://www.oracle.com/technetwork/cn/database/migration/sqlserver-095136-zhs.html Oracle SQL Dev ...

  10. linux 配置 crontab

    linux中的crontab是定时用的,下面的cron服务就是定时器的意思 crontab -l 列举所有的cron服务 crontab -e 修改cron服务 crontab -r 删除cron服务 ...