第十章、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. Jenkins——增加应用编译部署

    新建Item: 源码配置: 构建环境配置: #!/usr/bin/bash source /etc/profile tomcat_home="/home/mppay/apache-tomca ...

  2. C#创建windows服务(一:初识windows服务)

    一 . 服务简介 Microsoft Windows 服务(过去称为 NT 服务)允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序. 这些服务可在计算机启动时自动启动,可以暂 ...

  3. React Native小知识点记录

    1>查看 RN 的所有历史版本: npm view react-native versions -json 2>查看 RN 的当前版本: npm view react-native ver ...

  4. 【JulyEdu-Python基础】第 8 课:Python第三方库

    outline 数值计算 numpy 数据处理分析 pandas 可视化 matplotlib/seaborn 机器学习 Sklearn / keras 交互 pygame 网络 Selen ...

  5. Java中对JSONArray中的对象进行排序

    String jsonArrStr = "[ { \"ID\": \"135\", \"Name\": \"Fargo ...

  6. teach-es6-2(class)

    1 属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. var foo = 'bar'; var baz = {foo}; baz // {foo: &quo ...

  7. python列表的切片与复制

    切片,即处理一个完整列表中部分数据. 语法 变量[起始索引:终止索引:步长] 首先创建一个字符串列表 >>> cars = ['toyota', 'honda', 'mazda', ...

  8. Oracle的基本操作-序列的使用

    序列:默认从1开始,一次递增,主要用来给主键赋值使用 create sequence s_person; select s_person.nextval from dual; --dual是一张虚表, ...

  9. Synchronized与Lock的区别与应用场景

    转载. https://blog.csdn.net/fly910905/article/details/79765381 同步代码块,同步方法,或者是用java提供的锁机制,我们可以实现对共享资源变量 ...

  10. python基础知识0-3

    一.根据用户输入内容输出其权限 # 根据用户输入内容打印其权限    # FYT --> 超级管理员 # eric --> 普通管理员 # tony,rain --> 业务主管 # ...