简单谈谈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使用arp欺骗伪造网关的方法
Apr 24 Python
python正则表达式面试题解答
Apr 28 Python
浅述python2与python3的简单区别
Sep 19 Python
详解Django的model查询操作与查询性能优化
Oct 16 Python
Python列表(List)知识点总结
Feb 18 Python
python统计指定目录内文件的代码行数
Sep 19 Python
Python 实现数组相减示例
Dec 27 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Feb 11 Python
python 成功引入包但无法正常调用的解决
Mar 09 Python
在tensorflow以及keras安装目录查询操作(windows下)
Jun 19 Python
python的json包位置及用法总结
Jun 21 Python
matplotlib更改窗口图标的方法示例
Feb 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使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
JavaScript CSS修改学习第一章 查找位置
2010/02/19 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
Angular2 父子组件数据通信实例
2017/06/22 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
Python实现的几个常用排序算法实例
2014/06/16 Python
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
python利用装饰器进行运算的实例分析
2015/08/04 Python
python书籍信息爬虫实例
2018/03/19 Python
Python控制台实现交互式环境执行
2020/06/09 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
Eclipse面试题
2014/03/22 面试题
会计助理岗位职责
2014/02/17 职场文书
淘宝好评语大全
2014/05/05 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
2016教师学习教育法心得体会
2016/01/19 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL