简单谈谈Python中的json与pickle


Posted in Python onJuly 19, 2017

这是用于序列化的两个模块:

• json: 用于字符串和python数据类型间进行转换

• pickle: 用于python特有的类型和python的数据类型间进行转换

Json 模块提供了四个功能:dumps、dump、loads、load

pickle 模块提供了四个功能:dumps、dump、loads、load

import pickle
data = {'k1':123, 'k2':888}
#dumps可以将数据类型转换成只有python才认识的字符串
p_str = pickle.dumps(data)
print p_str


输出结果:

(dp0
S'k2'
p1
I888
sS'k1'
p2
I123
s.

将数据转换成只有Python认识的字符串,并写入文件:

import pickle
data = {'k1':123, 'k2':888}
#打开文件,然后将data写入
with open('data.pkl', 'wb') as f:
 pickle.dump(data, f)
#同样读取的时候也需要打开文件
with open('data.pkl', 'rb') as f:
 data_1 = pickle.load(f)
print data_1


结果:

{'k2': 888, 'k1': 123}

文件中显示的内容与上面一致

json的用法和pickle是一样的

import json
data = {'k1':123, 'k2':888}
p_str = json.dumps(data)
print p_str, type(p_str)


结果:

{"k2": 123, "k1": 888} <type 'str'>

看起来好像是个字典,但要注意了,实际上这是个字符串,因为json只能是字符串格式,只是看起来像字典而已。

import json
data = {'k1':123, 'k2':123}
 
#打开文件,然后将data写入
with open('data.pkl', 'w') as f:
 json.dump(data, f)
 
#同样读取的时候也需要打开文件
with open('data.pkl', 'r') as f:
 data_1 = json.load(f)
print(data_1, type(data_1))


结果:

({u'k2': 123, u'k1': 123}, <type 'dict'>)

能够读取出来,而且类型也是正确的。

那pickle和json有什么区别呢?

在上面两段代码中,pickle写入和读取文件时,用的是 ‘b'模式,而json没有。

json是可以在不同语言之间交换数据的,而pickle只在python之间使用。

json只能序列化最基本的数据类型,而pickle可以序列化所有的数据类型,包括类,函数都可以序列化。

以上这篇简单谈谈Python中的json与pickle就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现web方式logview的方法
Aug 10 Python
Python爬虫之模拟知乎登录的方法教程
May 25 Python
python实现windows下文件备份脚本
May 27 Python
使用Python对微信好友进行数据分析
Jun 27 Python
python中with语句结合上下文管理器操作详解
Dec 19 Python
40个你可能不知道的Python技巧附代码
Jan 29 Python
python如何把字符串类型list转换成list
Feb 18 Python
Python短信轰炸的代码
Mar 25 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
Jun 11 Python
python 深度学习中的4种激活函数
Sep 18 Python
Python headers请求头如何实现快速添加
Nov 03 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 Python
利用Python操作消息队列RabbitMQ的方法教程
Jul 19 #Python
高效测试用例组织算法pairwise之Python实现方法
Jul 19 #Python
Python实现将文本生成二维码的方法示例
Jul 18 #Python
Python实现动态加载模块、类、函数的方法分析
Jul 18 #Python
Python使用plotly绘制数据图表的方法
Jul 18 #Python
python中日志logging模块的性能及多进程详解
Jul 18 #Python
浅谈python中的__init__、__new__和__call__方法
Jul 18 #Python
You might like
PHP 简单数组排序实现代码
2009/08/05 PHP
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
jQuery代码优化 选择符篇
2011/11/01 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
2016/01/27 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
python 经典数字滤波实例
2019/12/16 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
草莓网官网:StrawberryNET
2019/08/21 全球购物
介绍一下Make? 为什么使用make
2016/07/31 面试题
安卓程序员求职信
2014/02/28 职场文书
收款授权委托书
2014/10/02 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
联村联户简报
2015/07/21 职场文书
MySQL 全文索引使用指南
2021/05/25 MySQL
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server