简单谈谈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之编写类之三子类
Oct 11 Python
Python解析xml中dom元素的方法
Mar 12 Python
Python抓取框架 Scrapy的架构
Aug 12 Python
python实现获取Ip归属地等信息
Aug 27 Python
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
python 字符串和整数的转换方法
Jun 25 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
python爬虫实现中英翻译词典
Jun 25 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
python matplotlib.pyplot.plot()参数用法
Apr 14 Python
基于python实现对文件进行切分行
Apr 26 Python
详解Python内置模块Collections
Mar 22 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实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
yii2中使用Active Record模式的方法
2016/01/09 PHP
php构造函数与析构函数
2016/04/23 PHP
php实现文章评论系统
2019/02/18 PHP
PHP多进程简单实例小结
2019/11/09 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
JAVASCRIPT keycode总结
2009/02/04 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
js实现搜索栏效果
2018/11/16 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
实习生个人找工作的自我评价
2013/10/30 职场文书
小学毕业感言150字
2014/02/05 职场文书
难忘的一课教学反思
2014/04/30 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
二十年同学聚会感言
2015/07/30 职场文书
新员工入职感想
2015/08/07 职场文书
python源码剖析之PyObject详解
2021/05/18 Python
Nginx缓存设置案例详解
2021/09/15 Servers
十大最强奥特曼武器:怪兽战斗仪在榜,第五奥特之父只使用过一次
2022/03/18 日漫