第十章、json和pickle模块
第十章、json和pickle模块
一、序列化
把对象(变量)从内存中变成可存储或传输的过程称之为序列化,
序列化优点:
- 持久保存状态:内存本身无法保存数据的,当运行了一段时间,我们断电或者重启程序,内存关于这个程序之前的一段时间的数据都被清空了。但是断电或者重启程序之前将程序当前的所有数据都保存在文件中了,下次运行程序的时候还能载入之前保存在文件的数据,这就是序列化。
- 跨平台数据交互:序列化时不仅可以把序列化后的内容写入磁盘,还可以通过网络传输到别的机器上,如果收发的双方约定好实用一种序列化的格式,那么便打破了平台/语言差异化带来的限制,实现了跨平台数据交互。
二、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模块的更多相关文章
- python模块(json和pickle模块)
json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...
- python-时间模块,random、os、sys、shutil、json和pickle模块
一.time与datetime模块 time模块: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回类型为float类型 格式化时间字符串(Format String) ...
- Python json和pickle模块
用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...
- 包--json 与 pickle 模块
一. 包 一个含有__init__.py 文件的文件夹(将py 文件中的内容划分成不同的部分放在不同的py 文件中,在将这些py 文件放在一个文件夹中) 是模块,不做执行文件,仅做调用 m1.py 和 ...
- Python之时间模块、random模块、json与pickle模块
一.时间模块 1.常用时间模块 import time # 时间分为三种格式 #1.时间戳---------------------以秒计算 # start= time.time() # time.s ...
- python常用模块之json、pickle模块
python常用模块之json.pickle模块 什么是序列化? 序列化就是把内存里的数据类型转换成字符,以便其能存储到硬盘或者通过网络进行传输,因为硬盘或网络传输时只接受bytes. 为什么要序列化 ...
- os模块,sys模块,json和pickle模块,logging模块
目录 OS模块 sys模块 json和pickle模块 序列化和反序列化 json模块 pickle logging模块 OS模块 能与操作系统交互,控制文件 / 文件夹 # 创建文件夹 import ...
- 模块讲解---os模块,sys模块,json和pickle模块,logging模块
目录 模块的用法 os模块 常用的功能 sys模块 常用的功能 json和pickle模块 4. logging模块 模块的用法 通过 import 或者from......import...... ...
- python(6)- json和pickle模块
这是用于序列化的两个模块: json: 用于字符串和python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 Json模块提供了四个功能:dumps ...
随机推荐
- spring cloud之Eureka
Region 表示aws的地理位置,一个region有多个awailability zone,各region间完全隔离.这种方式实现最大的容错和稳定性. spring cloud 默认使用的regio ...
- lftp下载文件无法覆盖,提示" file already existst and xfer:clobber is unset" 问题解决
在 /etc/lftp.conf 文件中添加以下配置即可 set xfer:clobber on
- powerdesigner使用遇到的一些问题
1.数据库逆向生成er图时,连接数据库问题 由于powerdesigner版本是32位,可能就导致不兼容64位的机器,导致连接mysql失败: 解决方法:方法1.重新配置32位jdk 方法2.mysq ...
- React Native的ListView的布局使用
1> ListView组件用于显示一个垂直的滚动列表,其中的元素之间结构近似而仅数据不同. ListView更适于长列表数据,且元素个数可以增删.和ScrollView不同的是,ListView ...
- Xib设置label自动换行和Label的顶部对齐
真的是不想说自己了,一个Xib纠结了一天,简直了,整整被虐了一上午啊...... 不知道这是Xcode8的问题呢....还是我的Xib约束什么的问题..... 只想说的是,以前也是这么设置的,明明可以 ...
- Hibernate三种状态:瞬时状态、持久化状态、离线状态
三种状态及相互转化 瞬时状态(transient):刚new出来一个对象,还没有被保存到数据库中 持久化状态(persistent):已经被保存到数据库中或刚从数据库中取得 离线状态(detached ...
- LeetCode.1185-一周中的星期几(Day of the Week)
这是小川的第415次更新,第448篇原创 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第266题(顺位题号是1185).给定日期,返回该日期的星期几.输入为三个整数,分别代表日,月和 ...
- C学习笔记-gdb
gdb即GNU debugger,用来调试程序 gdb使用前提 要使用gdb,则需要在编译源代码时候使用-g参数 gcc -g –o test test.c 启动gdb gdb 程序名 [corefi ...
- C学习笔记-第一个C语言程序
第一个C语言程序 #include<stdio.h> //1 int main() //2 { printf("This is a C language"); //3 ...
- 微信扫码无法直接下载APP的apk的解决办法
PHP的处理方式:http://blog.sina.com.cn/s/blog_4cd978f90102wx92.html