内置模块和第三方模块

json模块和pickle 模块(序列化模块)

  1. 什么是序列化?

    序列化就是将内粗这种的数据类型转成另一种格式

    序列化:字典类型——>序列化——>其他格式——>存入硬盘(存)

    反序列化:硬盘——>读取——>其他格式——>反序列化——>字典(取)

  2. 为什么要序列化?

    1.长久保存程序的运行状态

    2.数据的跨平台交互

  3. 如何序列化

    json:

    优点:这种是一种通用的格式,所有编程语言识别

    缺点:不能识别所有python类型

    pickle:

    优点:能识别所有python数据类型

    缺点:序列化后的格式只能被python语言识别

#json 格式(不支持python的元组和集合类型,set \tuple)
import json #序列化
dic = {'k1': True, 'k2': 11, 'k3': 'ming'}


dic_json = json.dumps(dic)
print(dic_json, type(dic_json))
#运行结果
{"k1": true, "k2": 11, "k3": "ming"} <class 'str'>
#运行后的结果是一段在python中的字符串,已经序列化
with open('a.json', mode='wt', encoding='utf-8')as f:
f.write(dic_json) #将序列化为json格式的数据类型写入硬盘(持久化) ​
#读取时候只需要反序列化即可
with open('a.json', mode='rt', encoding='utf-8')as f:
dic_json = f.read()
dic = json.loads(dic_json)
print(dic, dic['k1'])
#运行结果
{'k1': True, 'k2': 11, 'k3': 'ming'} True
#该过程就是一个反序列化读取过程


#当然上述代码还可以精简
import json
dic = {'k1': True, 'k2': 11, 'k3': 'ming'}
with open('b.json', mode='wt')as f:
json.dump(dic, f) #序列化加持久化括号传入参数为字典,f
#注意dump与dumps的区别 #反序列化
with open('b.json', mode='rt', encoding='utf-8')as f :
d = json.load(f) #注意load和loads的区别
print(d, d['k2'])
#运行结果
{'k1': True, 'k2': 11, 'k3': 'ming'} 11
#pickle 格式(支持所有的python数据类型,但是只能被python语言接收)
import pickle #二进制的序列化
s = {1, 2, 'ming', 5} #这是一个json不支持序列化的集合类型
s_pkl = pickle.dumps(s) #pickle序列化操作
print(s_pkl, type(s_pkl))
with open('c.pkl', mode='wb') as f: #进行持久化操作,写入硬盘
f.write(s_pkl)
运行结果
b'\x80\x03cbuiltins\nset\nq\x00]q\x01(K\x01K\x02X\x04\x00\x00\x00mingq\x02K\x05e\x85q\x03Rq\x04.' <class 'bytes'>

with open('c.pkl', mode='rb')as f: #反序列化操作(读取)
s_pkl = f.read()
s = pickle.loads(s_pkl)
print(s, type(s))
运行结果
{1, 2, 'ming', 5} <class 'set'>

#同样用dump和load的方法也更为简洁
dic = {'k1': True, 'k2': 11, 'k3': 'ming', 'k4': '你好啊'}
with open('d.pkl', mode='wb')as f: #pickle 序列化和持久化
dic_pkl = pickle.dump(dic, f)
print(dic_pkl)
with open('d.pkl', mode='rb')as f: #反序列化
dic = pickle.load(f)
print(dic, type(dic), dic['k4'])

#输出结果
None
{'k1': True, 'k2': 11, 'k3': 'ming', 'k4': '你好啊'} <class 'dict'> 你好啊

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

  1. Python基础(12)_python模块之sys模块、logging模块、序列化json模块、pickle模块、shelve模块

    5.sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 ...

  2. Python学习笔记:json模块和pickle模块(数据序列化)

    Python中的json模块和pickle都是用于数据的序列化和反序列化,它们提供的方法也是一样的:dumps,dump,loads,load dumps(obj):将对象序列化为str. dump( ...

  3. Python 入门之 内置模块 -- 序列化模块(json模块、pickle模块)

    Python 入门之 内置模块 -- 序列化模块(json模块.pickle模块) 1.序列化 Python中这种序列化模块有三种: ​ json模块 : ​ 不同语言都遵循的一种数据转化格式,即不同 ...

  4. 【python标准库模块四】Json模块和Pickle模块学习

    Json模块 原来有个eval函数能能够从字符串中提取出对应的数据类型,比如"{"name":"zhangsan"}",可以提取出一个字典. ...

  5. Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块

    一.sys模块 1.sys.argv 命令行参数List,第一个元素是程序本身路径 2.sys.exit(n) 退出程序,正常退出时exit(0) 3.sys.version . sys.maxint ...

  6. python学习第四十八天json模块与pickle模块差异

    在开发过程中,字符串和python数据类型进行转换,下面比较python学习第四十八天json模块与pickle模块差异. json 的优点和缺点 优点  跨语言,体积小 缺点 只能支持 int st ...

  7. python中的 json 模块使用

    (1)python 中生成 json 字符串: import json data = dict(ret=0, msg="Welcome, Login success!") json ...

  8. python中的json和pickle

    author:headsen chen date::2018-04-10  09:56:54 json模块和pickle模块: 这是用于序列化的两个模块: 概念介绍:json和pickle模块是将数据 ...

  9. json模块和pickle模块

    json模块和pickle模块 一.json模块 作用:用python写了一个程序,用java写了一门程序,这两个程序需要数据之间交流,就产生了一种多种语言通用的数据类型,json串. 序列化:把对象 ...

随机推荐

  1. CDlinux 安装

    镜像 CDlinux-0.9.7.1 虚拟机VMware12 1.VMware12中,新建虚拟机 2.典型安装方式 下一步 3.稍后安装操作系统 4.内核版本要选择[其他linux2.6.X内核] 5 ...

  2. 云计算的三种服务模式:IaaS,PaaS和SaaS

    云服务”现在已经快成了一个家喻户晓的词了.如果你不知道PaaS, IaaS 和SaaS的区别,那么也没啥,因为很多人确实不知道. “云”其实是互联网的一个隐喻,“云计算”其实就是使用互联网来接入存储或 ...

  3. Js学习(1)

    数据类型 简单数据类型 ◆number   数字类型 ◆string     字符串类型 ◆Boolean   布尔类型 ◆true      真 (正确的) ◆false     假(错误的) ◆u ...

  4. log4net 配置允许同时写日志到同一个文件

    RollingFileAppender appender = new RollingFileAppender();... appender.LockingModel = new FileAppende ...

  5. 基于HAProxy+Keepalived高可用负载均衡web服务的搭建

    一 原理简介 1.HAProxyHAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web ...

  6. ZooKeeper系列(8):ZooKeeper伸缩性

    一.ZooKeeper中Observer 1.1 ZooKeeper角色 经过前面的介绍,我想大家都已经知道了在ZooKeeper集群当中有两种角色Leader和Follower.Leader可以接受 ...

  7. Servlet --简单用户留言系统

    1.创建用户表和留言表 2.编写数据库连接工具类 public class SqlserverDBConn { private Statement stmt; private Connection c ...

  8. ElasticSearch Java API

    ElasticSearch-Java Client类型 ElasticSearch-TransportClient环境准备 ElasticSearch-TransportClient连接 Elasti ...

  9. HDFS分布式文件系统

    hadoop致力于构建在廉价的商用服务器上 多副本存储策略(副本数存多少合适) 常见是数据访问方式:流式数据访问(更适合大数据的访问)    随机数据访问(更适合传统的关系型数据库的访问)

  10. es6(12)--类,对象

    //类,对象 { //基本定义和生成实例 class Parent{ //定义构造函数 constructor(name='QQQ'){ this.name=name; } } let v_paren ...