python值json与pickle模块
1 #json 是用来序列化对象的 2 # 只有2个方法,序列化与反序列化 3 # 但是不能序列化类 与 函数 4 5 import json 6 dict={"key1":[1,2,3,4,5]} 7 f = open("json.test","w",encoding="utf8") 8 dict=json.dumps(dict) 9 f.write(dict) 10 f.close()
1 import json 2 f = open("json.test","r",encoding="utf8") 3 dict = json.loads(f.read()) 4 print(dict) 5 f.close()
1 # pickle 用来以二进制的形式序列化函数和类的 2 # "wb" 与“rb” 3 # 二进制转化不能加字符编码的转化 4 # picle loads回来的函数对象内存地址找不到了,需要在页面重新声明该函数对象。 5 6 def test(): 7 print("ok") 8 9 import pickle 10 f = open("pickle.test","wb") 11 data = pickle.dumps(test) 12 f.write(data) 13 f.close()
1 import pickle 2 3 # 还原的话需要重新声明该函数对象,因为对象的内存地址在转化的过程中发生了改变了! 4 def test(): 5 print("ok") 6 f = open("pickle.test","rb") 7 data = pickle.loads(f.read()) 8 data() #执行该函数 9 f.close()
1 import json 2 dict={"key1":[1,2,3,4,5]} 3 f = open("json.test","w",encoding="utf8") 4 # dict=json.dumps(dict) 5 # f.write(dict)# 6 #将上述2步骤进行替换 dump()的区别 7 json.dump(dict,f) 8 f.close()
1 import json 2 f = open("json.test","r",encoding="utf8") 3 # dict = json.loads(f.read()) 4 # print(dict) 5 data=json.load(f) 6 print(data) 7 f.close()
1 # shelve 针对创建的文本内容进行一个修改的时候,这个模块是比较灵活的 2 # shelve.open("test.txt") 3 # f.get("shabi","woca") 获取的键值不存在就返回指定的参数,这个很重要,经常使用 4 5 import shelve 6 7 f = shelve.open("test.txt") 8 f['info'] = {"name":"alex","age":"88"} 9 f['zhut'] = {"age":"78","shangtai":"关系"} 10 print(f.get("info")["name"]) 11 print(f.get("shabi","woca"))