简单谈谈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正则表达式教程之三:贪婪/非贪婪特性
Mar 02 Python
Python3安装Pymongo详细步骤
May 26 Python
Python模块WSGI使用详解
Feb 02 Python
python实现图书管理系统
Mar 12 Python
对python的bytes类型数据split分割切片方法
Dec 04 Python
Python numpy中矩阵的基本用法汇总
Feb 12 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
Mar 01 Python
为什么称python为胶水语言
Jun 16 Python
Python实现位图分割的效果
Nov 20 Python
baselines示例程序train_cartpole.py的ImportError
May 20 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中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
jQuery中delegate()方法用法实例
2015/01/19 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
javascript实现文件拖拽事件
2018/03/29 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
Python实现list反转实例汇总
2014/11/11 Python
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
Python实现包含min函数的栈
2016/04/29 Python
Python中的命令行参数解析工具之docopt详解
2017/03/27 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
快速查找Python安装路径方法
2020/02/06 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
Python中logger日志模块详解
2020/08/04 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
校园歌手大赛策划书
2014/01/17 职场文书
高中体育教学反思
2014/01/24 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
简易版租房协议书范本
2014/10/13 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
新生儿未入户证明
2015/06/23 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书