简单谈谈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分析nignx访问日志脚本分享
Feb 26 Python
Python检测QQ在线状态的方法
May 09 Python
python简单实现基数排序算法
May 16 Python
Python中atexit模块的基本使用示例
Jul 08 Python
Python2中文处理纪要的实现方法
Mar 10 Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 Python
python实现扫描局域网指定网段ip的方法
Apr 16 Python
python控制nao机器人身体动作实例详解
Apr 29 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
Sep 29 Python
TensorFlow绘制loss/accuracy曲线的实例
Jan 21 Python
python 使用while循环输出*组成的菱形实例
Apr 12 Python
python中zip()函数遍历多个列表方法
Feb 18 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之变量、常量学习笔记
2008/03/27 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
php数据访问之增删改查操作
2016/05/09 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
python合并文本文件示例
2014/02/07 Python
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
python版飞机大战代码分享
2018/11/20 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
写出一个方法实现冒泡排序
2016/07/08 面试题
铭万公司.net面试题笔试题
2014/07/20 面试题
幼师自我鉴定范文
2013/10/01 职场文书
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
幼儿园门卫制度
2014/01/29 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
2015年端午节活动方案
2015/05/05 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP