简单谈谈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模拟新浪微博登陆功能(新浪微博爬虫)
Dec 24 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
Apr 19 Python
Python中装饰器高级用法详解
Dec 25 Python
Django如何简单快速实现PUT、DELETE方法
Jul 24 Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 Python
pyecharts在数据可视化中的应用详解
Jun 08 Python
Python基于os.environ从windows获取环境变量
Jun 09 Python
详解在Python中使用Torchmoji将文本转换为表情符号
Jul 27 Python
python 使用建议与技巧分享(四)
Aug 18 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 Python
Python关于拓扑排序知识点讲解
Jan 04 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
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
PHP 替换模板变量实现步骤
2009/08/24 PHP
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
第六章 php目录与文件操作
2011/12/30 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
php实现XSS安全过滤的方法
2015/07/29 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
js select option对象小结
2013/12/20 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
django 外键model的互相读取方法
2018/12/15 Python
python中的列表与元组的使用
2019/08/08 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
城市规划毕业生求职信
2013/10/10 职场文书
计算机专业学生求职信分享
2013/12/15 职场文书
往来会计岗位职责
2013/12/19 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
会议通知
2015/04/15 职场文书