用于序列化的两个模块
- 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 读写文件都要以二进制模式打开