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

 

posted @ 2018-06-25 00:32  xiaodingzi  阅读(160)  评论(0编辑  收藏  举报