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"))