简单谈谈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通过解析网页实现看报程序的方法
Aug 04 Python
Python异常处理总结
Aug 15 Python
bat和python批量重命名文件的实现代码
May 19 Python
python解决Fedora解压zip时中文乱码的方法
Sep 18 Python
python初学之用户登录的实现过程(实例讲解)
Dec 23 Python
python用户管理系统
Mar 13 Python
Python 实现数据结构中的的栈队列
May 16 Python
Python Django框架防御CSRF攻击的方法分析
Oct 18 Python
Python 支持向量机分类器的实现
Jan 15 Python
Python基于gevent实现高并发代码实例
May 15 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
python 进程池pool使用详解
Oct 15 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/05/21 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
2014/09/27 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
PHP 布尔值的自增与自减的实现方法
2018/05/03 PHP
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
JS数组(Array)处理函数整理
2014/12/07 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
JS简单实现点击复制链接的方法
2016/08/03 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
原生js实现瀑布流效果
2020/03/09 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
python中正则的使用指南
2016/12/04 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
商务英语专业应届毕业生求职信
2013/10/28 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
体育教师求职信
2014/06/30 职场文书
老公出轨后的保证书
2015/05/08 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书