Python 学习之路 - json、pickle、shelve序列化
json、pickle
用于序列化的两个模块
- json,用于字符串 和 python基本数据类型间进行转换
- pickle,用于python特有的类型 和 python的数据类型间进行转换
json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
json 用法:
1 #序列化 2 import json 3 dic = {'k1':'v1'} 4 print(dic,type(dic)) 5 #json.dumps 把python的基本数据类型转换成字符串形式 6 result = json.dumps(dic) 7 print(dic, type(result)) 8 9 #反序列化 10 import json 11 s1='{"k1":123}' 12 #json.loads 把字符串形式转换成其他基本数据类型 13 #注意: 反序列化时,中间字符串一定用“”表示,原因:跨语言操作时,其他语言是用“”表示字符串 14 dic1 = json.loads(s1) 15 print(dic1, type(dic1)) 16 17 #序列化并把内容写进文本 18 li = [1,2,3,4,5] 19 json.dump(li,open("test","w")) 20 21 22 #从文本读出字符串并进行反序列化,但文件中的内容只能有一个基本数据 23 li = json.load(open("test","r")) 24 print(li,type(li))
pickle 用法 同 json 一样,但pickle是将数据转换为只有python语言认识的字符串,有点像python语言的转译。并且pickle可以转换任意类型的数据(自定义类的数据类型),json只能转换基本数据类型。
shelve
shelve模块是一个简单的k,v将内存数据通过文件持久化保存的模块,可以持久化任何pickle可支持的python数据格式。
shelve 模块相当于可以 load,dump文件中的内容多次。
shelve序列化
1 #shelve 模块相当于可以 load,dump文件中的内容多次 2 import shelve 3 4 s = shelve.open("test_shelve") 5 s["name"] = "DaLian" 6 s["neusoft"] = "HHH" 7 s.close()
shelve反序列化
1 import shelve 2 3 f = shelve.open("test_shelve") 4 print(f.get("name")) 5 print(f.get("neusoft"))