用于序列化的两个模块:
- json,用于字符串和python数据类型间的转换
- pickle,用于python特有的类型和python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
原则上,dump一次,load一次,想dump多次就写入多个文件
import pickle
data = {'k1':123,'k2':'hello'}
#pickle.dumps 将数据通过特殊的形式转换为只有python认识的字符串
p_str = pickle.dumps(data)
print(p_str)
print(type(data))
#pickle.dump 将数据通过特殊的形式转换为只有python认识的字符串,并写入文件
with open("test.pk",'w') as f:
#python3会报错,python3中文件写入模式应为“wb”,使用二进制方式,而不是字符方式写入
pickle.dump(data,f)
import json
j_str = json.dumps(data)
print(j_str)
#json.dump 将数据通过特殊的形式转换为所有程序语言都认识的字符串,并写入文件
with open("test.json","w") as f:
json.dump(data,f)
pickle反序列化
import pickle
f = open("test.txt","rb")
data = pickle.loads(f.read())#等价于data = pickle.load(f)
print(data["func"]("yanzhuang"))
f.close()
json反序列化
import json
f = open("test.txt","r")
data = json.loads(f.read())
print(data.get("name"))
f.close()