第十章、json和pickle模块

一、序列化

把对象(变量)从内存中变成可存储或传输的过程称之为序列化,

序列化优点:

  1. 持久保存状态:内存本身无法保存数据的,当运行了一段时间,我们断电或者重启程序,内存关于这个程序之前的一段时间的数据都被清空了。但是断电或者重启程序之前将程序当前的所有数据都保存在文件中了,下次运行程序的时候还能载入之前保存在文件的数据,这就是序列化。
  2. 跨平台数据交互:序列化时不仅可以把序列化后的内容写入磁盘,还可以通过网络传输到别的机器上,如果收发的双方约定好实用一种序列化的格式,那么便打破了平台/语言差异化带来的限制,实现了跨平台数据交互。

二、json

json序列化

json数据类型和python数据类型对应关系表

Json类型 Python类型
{} dict
[] list
"string" str
520.13 int或float
true/false True/False
null None

反序列化和序列化的一个过程如图

import json
struct_data={"a":1,"b":2,"c":3}
print(struct_data)
json_data=json.dumps(struct_data)
#{'a': 1, 'b': 2, 'c': 3}
with open("json序列化.json","w") as fw:
json.dump(struct_data,fw)
#生成了json文件
with open("json序列化.json") as fr:
data_load=json.load(fr)
print(data_load)#{'a': 1, 'b': 2, 'c': 3}
#反序列化json文件

三、pickle模块

和json区别在于:pickle的可以存储Python中的所有的数据类型,包括对象,而json不可以。 pickle不能跨平台,甚至不同版本python也不能兼容

#序列化内存中的数据
import pickle
struct_data={"a":1,"b":2,"c":3}
print(struct_data)
pickle_data=pickle.dumps(struct_data)
print(pickle_data)
#b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02K\x02X\x01\x00\x00\x00cq\x03K\x03u.'
#反序列化内存中的数据
pickle_data=pickle.loads(pickle_data)
print(pickle_data)
#{'a': 1, 'b': 2, 'c': 3}
#pickle模块需要使用二进制存储,即'wb'模式存储
#序列化数据,保存在文件中
with open("pick序列化对象.pkl","wb") as fw:
pickle.dump(struct_data,fw)
#生成了pkl文件
#反序列化文件中的数据
with open('Pickle序列化对象.pkl', 'rb') as fr:
pickle_data = pickle.load(fr)
print(pickle_data)
#{'a': 1, 'b': 2, 'c': 3}

第十章、json和pickle模块的更多相关文章

  1. python模块(json和pickle模块)

    json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...

  2. python-时间模块,random、os、sys、shutil、json和pickle模块

    一.time与datetime模块 time模块: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回类型为float类型 格式化时间字符串(Format String) ...

  3. Python json和pickle模块

    用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...

  4. 包--json 与 pickle 模块

    一. 包 一个含有__init__.py 文件的文件夹(将py 文件中的内容划分成不同的部分放在不同的py 文件中,在将这些py 文件放在一个文件夹中) 是模块,不做执行文件,仅做调用 m1.py 和 ...

  5. Python之时间模块、random模块、json与pickle模块

    一.时间模块 1.常用时间模块 import time # 时间分为三种格式 #1.时间戳---------------------以秒计算 # start= time.time() # time.s ...

  6. python常用模块之json、pickle模块

    python常用模块之json.pickle模块 什么是序列化? 序列化就是把内存里的数据类型转换成字符,以便其能存储到硬盘或者通过网络进行传输,因为硬盘或网络传输时只接受bytes. 为什么要序列化 ...

  7. os模块,sys模块,json和pickle模块,logging模块

    目录 OS模块 sys模块 json和pickle模块 序列化和反序列化 json模块 pickle logging模块 OS模块 能与操作系统交互,控制文件 / 文件夹 # 创建文件夹 import ...

  8. 模块讲解---os模块,sys模块,json和pickle模块,logging模块

    目录 模块的用法 os模块 常用的功能 sys模块 常用的功能 json和pickle模块 4. logging模块 模块的用法 通过 import 或者from......import...... ...

  9. python(6)- json和pickle模块

    这是用于序列化的两个模块: json: 用于字符串和python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 Json模块提供了四个功能:dumps ...

随机推荐

  1. flutter AnimatedPositioned

    Positioned 的动画版. 只有是 Stack 的 child 时才能工作. 如果 child 的 size 在动画过程会改变,则 AnimatedPositioned 是很好的选择 doubl ...

  2. Spring Security在登录验证中增加额外数据(如验证码)

    在使用Spring Security框架过程中,经常会有这样的需求,即在登录验证时,附带增加额外的数据,如验证码.用户类型等.下面将介绍如何实现. 注:我的工程是在Spring Boot框架基础上的, ...

  3. 小D课堂 - 新版本微服务springcloud+Docker教程_6-01 微服务网关介绍和使用场景

    笔记 第六章 微服务网关zuul开发实战 1.微服务网关介绍和使用场景     简介:讲解网关的作用和使用场景 (画图)          1)什么是网关         API Gateway,是系 ...

  4. Hadoop HDFS命令学习笔记

    cat Usage: hadoop fs -cat [-ignoreCrc] URI [URI ...] Copies source paths to stdout. Options The -ign ...

  5. CWinThread类,使用后要不要使用CloseHandle释放内核

    在VC++中用AfxBeginThread()开启线程的时候,返回的是CWinThead类的指针.但是使用后是否应该用CloseHandle释放内核资源呢? 在<Windows核心编程>中 ...

  6. Mybatis 属性配置

    properties  定义配置,配置的属性可以在整个配置文件中的其他位置进行引用 <properties resource="db.properties"></ ...

  7. 整合AD RMS与EX 2010。

    1.点击开始菜单, 选择所有程 序,展开 Mi cros oft  Excha nge  Server  2010 ,打开Excha nge Ma na gement Cons ol e,选择收件人配 ...

  8. 【计算机视觉】TPAMI的Editors

    写了一篇文章准备试试TPAMI,没指望中,就当听听意见也好,让选两个Editors (2 preferred editors required),于是调研了一下这些人都是做什么的,有同行路过请评价补充 ...

  9. 【VS开发】CFormView

    原文地址:CFormView作者:罗纳尔多 CFormView是MFC使用无模式对话框的一个典型例子.CFormView是基于对话框模板创建的视,它的直接基类是CSrcollView,CSrcollV ...

  10. 走近kafka-文件存储

    过期的数据才会被自动清除以释放磁盘空间.比如我们设置消息过期时间为2天,那么这2天内的所有消息都会被保存到集群中,数据只有超过了两天才会被清除. Kafka只维护在Partition中的offset值 ...