简单谈谈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 控制语句
Nov 03 Python
CentOS安装pillow报错的解决方法
Jan 27 Python
实践Vim配置python开发环境
Jul 02 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
Oct 28 Python
django实现类似触发器的功能
Nov 15 Python
TensorFlow索引与切片的实现方法
Nov 20 Python
简单了解python filter、map、reduce的区别
Jan 14 Python
Python super()方法原理详解
Mar 31 Python
基于Pyinstaller打包Python程序并压缩文件大小
May 28 Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 Python
python线性插值解析
Jul 05 Python
python中Django文件上传方法详解
Aug 05 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编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
php中防止伪造跨站请求的小招式
2011/09/02 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
JS实现多功能计算器
2020/10/28 Javascript
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
python定时执行指定函数的方法
2015/05/27 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
python正则表达式匹配不包含某几个字符的字符串方法
2019/07/23 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
三年大学生活自我鉴定
2014/01/21 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
2014年财政局工作总结
2014/12/09 职场文书
怎样写家长意见
2015/06/04 职场文书
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL