具体案例参考如下:
In [3]: data=https://www.04ip.com/post/{"back_to_host": "rac1",
...: "ip_address": "10.215.20.3",
...: "host_name": "rac3",
...: "port": 3306}
In [7]: json_str=json.dumps(data)
In [8]: print json_str
{"ip_address": "10.215.20.3", "back_to_host": "rac1", "host_name": "rac3", "port": 3306}
In [9]: json_loads=json.load(json_str)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
ipython-input-9-180506f16431 in module()
---- 1 json_loads=json.load(json_str)
/System/Library/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)
284
285 ""
注意 从上面的报错信息来看 json.loads 传参是字符串类型,并不是文件句柄,没有 read()属性 。
In [10]: json_loads=json.loads(json_str)
In [11]: print json_loads
{u'back_to_host': u'rac1', u'ip_address': u'10.215.20.3', u'host_name': u'rac3', u'port': 3306}
In [12]: type(json_loads)
Out[12]: dict
In [13]: type(json_str)
Out[13]: str
利用dump 将数据写入 dump.json
In [17]: with open('/tmp/dump.json','w') as f:
...: json.dump(json_str,f)
...:
yangyiDBA:~ yangyi$ cat /tmp/dump.json
"{\"ip_address\": \"10.10.20.3\", \"back_to_host\": \"rac1\", \"host_name\": \"rac3\", \"port\": 3306}"
yangyiDBA:~ yangyi$
利用json.load 将dump.sjon的数据读出来并赋值给 data
In [18]: with open('/tmp/dump.json','r') as f:
...: data=https://www.04ip.com/post/json.load(f)
...:
In [19]: print data
{"ip_address": "10.10.20.3", "back_to_host": "rac1", "host_name": "rac3", "port": 3306}
三 小结
本文算是一篇学习笔记,主要对比了json.loads/json.load, json.dumps/ json.dump 的使用差异 ,方便以后更好的使用json。
以上为本次分享内容,感谢观看 。
python3.6中pickle.dump()方法的疑问python的pickle模块实现了基本的数据序列和反序列化 。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去python反序列化函数 , 永久存储python反序列化函数;通过pickle模块的反序列化操作python反序列化函数 , 我们能够从文件中创建上一次程序保存的对象 。
基本接口:
pickle.dump(obj, file, [,protocol])
注解:将对象obj保存到文件file中去 。
protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII码表示;1:老式的二进制协议;2:2.3版本引入的新二进制协议,较以前的更高效 。其中协议0和1兼容老版本的python 。protocol默认值为0 。
file:对象保存到的类文件对象 。file必须有write()接口,file可以是一个以'w'方式打开的文件或者一个StringIO对象或者其他任何实现write()接口的对象 。如果protocol=1 , 文件对象需要是二进制模式打开的 。
pickle.load(file)
注解:从file中读取一个字符串,并将它重构为原来的python对象 。
file:类文件对象,有read()和readline()接口 。
A Simple Code
#使用pickle模块将数据对象保存到文件
import pickle
data1 = {'a': [1, 2.0, 3, 4+6j],
'b': ('string', u'Unicode string'),
'c': None}
selfref_list = [1, 2, 3]
selfref_list.append(selfref_list)
output = open('data.pkl', 'wb')
# Pickle dictionary using protocol 0.
pickle.dump(data1, output)
# Pickle the list using the highest protocol available.
pickle.dump(selfref_list, output, -1)
output.close()
#使用pickle模块从文件中重构python对象
推荐阅读
- flutter调用原生控件原理,flutter 原生view
- sqlserver安装无法自动重启,为什么安装sql server一直提示重启电脑
- pr为什么导入不了视频,pr为啥导入不了视频
- 关于postgre生成自增的信息
- linux命令新增文件夹 linux 新增文件
- 在1688直播上买什么,在阿里巴巴拿货直播卖
- 金融单机游戏,好玩的金融游戏
- 陌陌主播怎么玩直播视频,陌陌主播怎么玩直播视频教学
- linux命令怎么开发 linux怎么打开命令