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之玩转字符串(2)
Sep 14 Python
Python中正则表达式详解
May 17 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
详解如何设置Python环境变量?
May 13 Python
python整合ffmpeg实现视频文件的批量转换
May 31 Python
python实现点击按钮修改数据的方法
Jul 17 Python
Django框架 信号调度原理解析
Sep 04 Python
python的range和linspace使用详解
Nov 27 Python
Python3 main函数使用sys.argv传入多个参数的实现
Dec 25 Python
Python Flask上下文管理机制实例解析
Mar 16 Python
Python常用数据分析模块原理解析
Jul 20 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
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
实现js保留小数点后N位的代码
2014/11/13 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
bmob js-sdk 在vue中的使用教程
2018/01/21 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python 功能和特点(新手必学)
2015/12/30 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
使用Python抓取豆瓣影评数据的方法
2018/10/17 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
写好自荐信的几个要点
2013/12/26 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
新文化运动的基本口号
2014/06/21 职场文书
分公司总经理岗位职责
2014/07/30 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
公司员工辞职信范文
2015/05/12 职场文书
仙境之桥观后感
2015/06/16 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫