json,pickle等类型文件的读写

读取json文件的每一行,然后json.loads将字符串转为字典(数据)。json.load将文件打开,并且把字符串转为数据类型。
json.dumps将字典(数据)转为字符串,然后用json.dump,将字符串写入json文件中。

序列化和反序列化

变量从内存中变成可存储或传输的过程称之为序列化,序列化是将对象状态转化为可保存或可传输格式的过程。
变量内容从序列化的对象重新读到内存里称之为反序列化,反序列化是流转换为对象。

参考链接

json和pickle都可以将python的对象保存为一个文件,打开该文件的时候可以保持对象的数据类型不变。

json和pickle的区别:
json:用于字符串和Python数据类型间进行转换,可以跨平台
pickle支持所有数据类型,但仅限于python中,不能跨平台
json文件打开可以识别其中的内容,pkl文件打开是乱码

对于json

dump 和 dumps 都实现了序列化
load 和 loads 都实现反序列化

load 和 loads的区别:
load:针对文件句柄,将json格式的字符转换为dict,从文件中读取 (将string转换为dict)
例子:a_json = json.load(open('demo.json','r'))
loads:针对内存对象,将string转换为dict (将string转换为dict)
例子:a = json.loads('{'a':'1111','b':'2222'}')

dump 和 dumps的区别:
dump:将dict类型转换为json字符串格式,写入到文件 (易存储)
例子:a_dict = {'a':'1111','b':'2222'}
json.dump(a_dict, open('demo.json', 'w')
dumps:将dict转换为string (易传输)
a_dict = {'a':'1111','b':'2222'}
a_str = json.dumps(a_dict)
a_str is : '{"a": "1111", "b": "2222"}'

总结:

根据序列化和反序列的特性

loads: 是将string转换为dict
dumps: 是将dict转换为string
load: 是将里json格式字符串转化为dict,读取文件
dump: 是将dict类型转换为json格式字符串,存入文件

对于pickle
Python提供两个模块来实现序列化:cPickle和pickle。这两个模块功能是一样的,区别在于cPickle是C语言写的,速度快,pickle是纯Python写的,速度慢。

pickle可以存储的类型:

所有python支持的原生类型:布尔值,整数,浮点数,复数,字符串,字节,None。
由任何原生类型组成的列表,元组,字典和集合。
函数,类,类的实例

pickle用法:

pickle.dump(obj, file, protocol=None,)  #  file需要是wb格式打开
pickle.load(file)  #  file需要是rb格式打开
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章