python19 序列化
序列化: 自定义对象是不能直接在IO中进行操作的。
对于普通的常用的类型: str —> 直接保存
如果是list,dict,set,int float 自定义类的对象… —> 保存到一个文件中
此时就需要序列化(list,dict, … 转成字节表示)
实现序列化的方式:
- json: 是一种轻量级的数据交换格式.
{key:value,key:value,…key:[{}]}
str = json.dumps(类型) —> 序列化
类型 = json.loads(str) ----> 反序列化 - pickle:
使用同json,但是可以直接操作自定义类型对象
区别: json模块是将对象转换成为字符串,而pickle模块是将对象转换成为二进制。
load和loads、dump和dumps区别:
- json.dumps()
对json进行编码,把数据类型转换成字符串。 - json.dump(类型,文件流)
对json进行编码, 把数据类型转换成字符串,并存储在文件中。 - json.loads()
对json进行解码,把字符串转换成数据类型 。 - json.load(文件流)
把文件打开,对json进行解码,从字符串转换成数据类型。
json
import json
with open('cartoon.txt', 'w') as ws:
dict1 = {
'name': '太一', 'age': 8, 'gender': '男'}
print(type(dict1))
# json中提供了一个dumps实现序列化,返回值就是序列化后的结果
result = json.dumps(dict1)
print(type(result)