用于序列化的两个模块
json,用于字符串 和 python数据类型间进行转换
pickle,用于python特有的类型 和 python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
json序列化:就是将内存的对象存储在硬盘上变成字符串
方法一:
info={
'name':'hunter'
'age':22
}
f=open("test.test","w")
f.write(str(info))
f.close()
方法二:
import json
info={
'name':'hunter'
'age':22
}
f=open("test.test","w")
f.write(json.dumps(info))
f.close()
反序列化:将硬盘中的文件重新加载到内存中
方法一:
info={
'name':'hunter'
'age':22
}
f=open("test.test","r")
data = eval(f.read())
f.close()
print(data['age'])
方法二:
import json
info={
'name':'hunter'
'age':22
}
f=open("test.test","r")
data = json.loads(f.read())
print(data['age'])
json主要是处理简单的数据类型,面对于繁杂的类型,需要使用pickle,使用方法与json方法一样
pickle序列化:
方法一dumps:
import pickle
info={
'name':'hunter'
'age':22
}
f=open("test.test","wb")
f.write(pickle.dumps(info))
f.close()
方法二dump:
pickle.dump(info.f)#等于f.write(pickle.dumps(info))
f.close()
注:默认的pickle后会以二进制的形式体现,储存也是以二进制的形式,pickle只是Python中的语言,不是通用的
pickle反序列化:
方法一loads:
import pickle
info={
'name':'hunter'
'age':22
}
f=open("test.test","rb")
data = pickle.loads(f.read())
print(data)
方法二load:
data = pickle.load(f)#等于 data = pickle.loads(f.read())
shelve 模块:
生成:
import shelve
d = shelve.open('shelve_test') #打开一个文件
info={'age':25,"job":'IT'}
name = ["ht","rain","test"]
d["name"] = name #持久化列表
d["info"] = info #持久化列表
d.close()
读:
import shelve
d = shelve.open('shelve_test') #打开一个文件
print(d.get("name"))
print(d.get("info"))