用于序列化的两个模块
- Json,用于字符串 和 python数据类型间进行转换
- Pickle,用于python特有的类型 和 python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
Pickle模块提供了四个功能:dumps、dump、loads、load
Json
将数据通过特殊的形式转换为所有程序语言都认识的字符串
Python 原始类型向 Json 类型转换表
| Python | Json |
| dict | object |
| list, tuple | array |
| str, unicose | string |
| int, long, float | number |
| Ture | ture |
| False | false |
| None | null |
Json dump & dumps:
import json
info = {
'name': 'dbf-',
'age': 18
}
with open('test', 'w')as f:
print(json.dumps(info), ' is the result')
f.write(json.dumps(info)) # 写入Json文件 json.dump(info, f)=f.write(json.dumps(info))
# dumps序列化一次load反序列化一次
输出结果:
{"age": 18, "name": "dbf-"} is the result
Json load & loads:
import json
with open('test', 'r')as f: # 打开json文件
data = json.loads(f.read()) # 读入内存地址 json.load(f) = json.loads(f.read())
print(data['age'])
输出结果:
18
Pickle
将数据通过特殊的形式转换为只有Python语言认识的字符串
Pickle dump & dumps
import pickle
info = {
'name': 'dbf-',
'age': 18
}
with open('test', 'wb')as f: # 以二进制模式打开文件
print(pickle.dumps(info), ' is the result')
pickle.dump(info, f) # f.write(pickle.dumps(info))
输出结果:
b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x04\x00\x00\x00dbf-q\x02X\x03\x00\x00\x00ageq\x03K\x12u.' is the result
Pickle load & loads
import pickle
with open('test', 'rb')as f: # 以二进制模式打开文件
data = pickle.load(f) # data = pickle.loads(f.read())
print(data['age'])
输出结果:
18
注意:Pickle 读写文件都要以二进制模式打开
来源:oschina
链接:https://my.oschina.net/u/4381494/blog/3603131