python-json&pickle模块
一、json模块
1、概念
json是一种通用的数据交换格式。将python的数据类型转换为符合json规范的数据格式后,其它语言也能正常解析(序列化)。
或者将符合json规范的数据转换为python数据类型(反序列化)。
json起到了桥梁作用。
2、json.dumps方法
2.1、语法
json.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)
将 Python 对象编码成 JSON 字符串
2.2、实例
import json py_dic = {'name' : 'dongzuo'} f = open('json.txt','w') json_dic = json.dumps(py_dic) # 将数据内部的所有的单引号转换为双引号,然后在整个数据外加上单引号 {'name' : 'dongzuo'} -->'{"name": "dongzuo"}'
f.write(json_dic)
f.close()
查看json.txt文件
{"name": "dongzuo"}
3、json.dump方法
3.1、json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,default=None,sort_keys=False, **kw)
将 Python 对象编码成 JSON 字符串
3.2、实例
import json py_dic = {'name': 'dongzuo'} f = open('json.txt', 'w') json.dump(py_dic,f) f.close()
查看json.txt
{"name": "dongzuo"}
3.3、dumps和dump的区别
dumps需要write方法写入
dump不需要write方法
4、loads方法
4.1、语法
json.loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None,parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
将已编码的 JSON 字符串解码为 Python 对象
4.2、实例
存在文件json.txt,文件内容如下
{"name": "dongzuo"}
执行代码
import json f = open('json.txt', 'r') data_str = f.read() # 将文件中的字符串读取(文件中的数据都是以字符串形式存在的,只不过我们看到它符合了字典的格式) data = json.loads(data_str) f.close() print(data_str) print(type(data_str)) print(data) print(type(data))
输出结果
{"name": "dongzuo"}
<class 'str'>
{'name': 'dongzuo'}
<class 'dict'>
5、json.load方法
5.1、语法
json.load(fp, *, cls=None, object_hook=None, parse_float=None,parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
将已编码的 JSON 字符串解码为 Python 对象
5.2、实例
存在文件json.txt,内容如下
{"name": "dongzuo"}
执行代码
import json f = open('json.txt', 'r') data = json.load(f) # 相当于json.loads(f.read() f.close() print(data) print(type(data))
输出
{'name': 'dongzuo'}
<class 'dict'>
6、loads和load区别
loads()传的是字符串,而load()传的是文件对象
使用loads()时需要先读文件再使用,而load()则不用
二、pickle模块
1、概述
pickle于json功能一样,只不pickle应用范围比较广泛,可以是python的函数、类,但是实际转换的也是内存地址
json:用于字符串和Python数据类型间进行转换
pickle: 用于python特有的类型和python的数据类型间进行转换
json提供四个功能:dumps,dump,loads,load
pickle提供四个功能:dumps,dump,loads,load
2、pick.dumps方法
2.1、语法
pick.dumps(*args, **kwargs)
2.2、实例
import pickle py_dic = {'name':'zhangsan','age':13} f = open('pickle.txt','wb') # 必须是使用b模式打开 pick_dic = pickle.dumps(py_dic) # 将字典转换为字节(只有python认识的字符串),所以我们直接用打开文件查看时,是乱码 f.write(pick_dic) f.close() print(pick_dic)
输出如下
b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x08\x00\x00\x00zhangsanq\x02X\x03\x00\x00\x00ageq\x03K\ru.'
3、pickle.loads方法
3.1、语法
pickle.loads(*args, **kwargs)
3.2、实例
import pickle f = open('pickle.txt','rb') data_b = f.read() data_py = pickle.loads(data_b) f.close() print(data_b) print(type(data_b)) print(data_py) print(type(data_py))
输出
b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x08\x00\x00\x00zhangsanq\x02X\x03\x00\x00\x00ageq\x03K\ru.' <class 'bytes'> {'name': 'zhangsan', 'age': 13} <class 'dict'>
浙公网安备 33010602011771号