python json.dumps() json.dump()的区别详解


Posted in Python onJuly 14, 2020

以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些。如果还有不好的地方,欢迎指出。

首先说明基本功能:

dumps是将dict转化成str格式,loads是将str转化成dict格式。

dump和load也是类似的功能,只是与文件操作结合起来了。

看代码实例:

In [1]: import json
 
In [2]: a = {'name': 'wang', 'age': 29}
 
In [3]: b = json.dumps(a)
 
In [4]: print b, type(b)
{"age": 29, "name": "wang"} <type 'str'>
 
In [11]: json.loads(b)
Out[11]: {u'age': 29, u'name': u'wang'}
 
In [12]: print type(json.loads(b))
<type 'dict'>

然后再看dump和dumps的区别,见代码:

In [1]: import json
 
In [2]: a = {'name': 'wang', 'age': 29}
 
In [3]: b = json.dumps(a)
 
In [4]: print b, type(b)
{"age": 29, "name": "wang"} <type 'str'>
 
In [5]: c = json.dump(a)
---------------------------------------------------------------------------
TypeError                 Traceback (most recent call last)
<ipython-input-5-92dc0d929363> in <module>()
----> 1 c = json.dump(a)
 
TypeError: dump() takes at least 2 arguments (1 given)

这里提示我们少一个参数,我们看一下帮助文件(iPyhton中可以直接使用help(json.dumps)来查看帮助文件):

dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, sort_keys=False, **kw)
Serialize ``obj`` to a JSON formatted ``str``. 

dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, sort_keys=False, **kw)
Serialize ``obj`` as a JSON formatted stream to ``fp`` (a
``.write()``-supporting file-like object). 

简单说就是dump需要一个类似于文件指针的参数(并不是真的指针,可称之为类文件对象),可以与文件操作结合,也就是说可以将dict转成str然后存入文件中;而dumps直接给的是str,也就是将字典转成str。

例子见代码(注意文件操作的一些小细节):

In [1]: import json
 
In [2]: a = {'name': 'wang'}
 
In [3]: fp = file('test.txt', 'w')
 
In [4]: type(fp)
Out[4]: file
 
In [5]: json.dump(a, fp)
 
In [6]: cat test.txt
 
In [7]: fp.close()
 
In [8]: cat test.txt
{"name": "wang"}
In [9]: json.load(fp)
---------------------------------------------------------------------------
ValueError                Traceback (most recent call last)
<ipython-input-9-0064dabedb17> in <module>()
----> 1 json.load(fp)
 
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
  285
  286   """
--> 287   return loads(fp.read(),
  288     encoding=encoding, cls=cls, object_hook=object_hook,
  289     parse_float=parse_float, parse_int=parse_int,
 
ValueError: I/O operation on closed file
 
In [10]: fp = file('test.txt', 'r')
 
In [11]: json.load(fp)
Out[11]: {u'name': u'wang'}

注:实际中dump用的较少。

到此这篇关于python json.dumps() json.dump()的区别详解的文章就介绍到这了,更多相关python json.dumps() json.dump()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python获取指定网页上所有超链接的方法
Apr 04 Python
人脸识别经典算法一 特征脸方法(Eigenface)
Mar 13 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
python连接mongodb密码认证实例
Oct 16 Python
python爬取网易云音乐评论
Nov 16 Python
Python简单过滤字母和数字的方法小结
Jan 09 Python
python可视化text()函数使用详解
Feb 11 Python
Python中的sys.stdout.write实现打印刷新功能
Feb 21 Python
使用python计算三角形的斜边例子
Apr 15 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 Python
详解Anaconda 的安装教程
Sep 23 Python
Jupyter notebook 更改文件打开的默认路径操作
May 21 Python
pandas to_excel 添加颜色操作
Jul 14 #Python
Python数据可视化实现多种图例代码详解
Jul 14 #Python
简单的Python人脸识别系统
Jul 14 #Python
Python局部变量与全局变量区别原理解析
Jul 14 #Python
Python迭代器协议及for循环工作机制详解
Jul 14 #Python
windows10在visual studio2019下配置使用openCV4.3.0
Jul 14 #Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 #Python
You might like
15个小时----从修改程序到自己些程序
2006/10/09 PHP
一个简单的PHP&amp;MYSQL留言板源码
2020/07/19 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
js的hasownproperty使用示例
2014/03/02 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
2015/09/06 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
js css自定义分页效果
2017/02/24 Javascript
js实现动态显示时间效果
2017/03/06 Javascript
Node.js简单入门前传
2017/08/21 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
详解python的webrtc库实现语音端点检测
2017/05/31 Python
详解python3中zipfile模块用法
2018/06/18 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
大学生村官心得体会范文
2014/01/04 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
初中学习计划书范文
2014/09/15 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
大学生在校表现评语
2014/12/31 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
学习计划是什么
2019/04/30 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
redis中lua脚本使用教程
2021/11/01 Redis