python值json与pickle模块

时间:2023-03-08 23:29:08
python值json与pickle模块
 #json 是用来序列化对象的
# 只有2个方法,序列化与反序列化
# 但是不能序列化类 与 函数 import json
dict={"key1":[1,2,3,4,5]}
f = open("json.test","w",encoding="utf8")
dict=json.dumps(dict)
f.write(dict)
f.close()
 import json
f = open("json.test","r",encoding="utf8")
dict = json.loads(f.read())
print(dict)
f.close()
 # pickle 用来以二进制的形式序列化函数和类的
# "wb" 与“rb”
# 二进制转化不能加字符编码的转化
# picle loads回来的函数对象内存地址找不到了,需要在页面重新声明该函数对象。 def test():
print("ok") import pickle
f = open("pickle.test","wb")
data = pickle.dumps(test)
f.write(data)
f.close()
 import pickle

 # 还原的话需要重新声明该函数对象,因为对象的内存地址在转化的过程中发生了改变了!
def test():
print("ok")
f = open("pickle.test","rb")
data = pickle.loads(f.read())
data() #执行该函数
f.close()
 import json
dict={"key1":[1,2,3,4,5]}
f = open("json.test","w",encoding="utf8")
# dict=json.dumps(dict)
# f.write(dict)#
#将上述2步骤进行替换 dump()的区别
json.dump(dict,f)
f.close()
 import json
f = open("json.test","r",encoding="utf8")
# dict = json.loads(f.read())
# print(dict)
data=json.load(f)
print(data)
f.close()
 # shelve 针对创建的文本内容进行一个修改的时候,这个模块是比较灵活的
# shelve.open("test.txt")
# f.get("shabi","woca") 获取的键值不存在就返回指定的参数,这个很重要,经常使用 import shelve f = shelve.open("test.txt")
f['info'] = {"name":"alex","age":""}
f['zhut'] = {"age":"","shangtai":"关系"}
print(f.get("info")["name"])
print(f.get("shabi","woca"))