Json是各程序通用的数据格式;pickle是Python特有的,可以存储很多Python特有的数据,如函数地址等
Json的简单使用:
1 import json 2 jsondata={ 3 "user":"dong", 4 "name":"dongxiaodong", 5 "age":100 6 } 7 #字典(json对象)转换为字符串 8 strjson=json.dumps(jsondata) 9 print(type(strjson)) #输出:10 11 #字符串转换为json对象12 dicjson=json.loads(strjson)13 print(dicjson["age"]) #输出:100
Pickle
Pickle序列化:
1 import pickle 2 3 def funx1(valuex): 4 print("---------------",valuex) 5 6 jsondata={ 7 "user":"dong", 8 "name":"dongxiaodong", 9 "age":100,10 "funx":funx1 #保存函数地址,函数地址是以函数名确定的11 }12 13 #序列化,将字典转换为byte对象14 bytejson=pickle.dumps(jsondata)15 print(type(bytejson)) #输出:16 17 #保存到文件中18 open("ww.txt","wb").write(bytejson)
Pickle反序列化:
import pickle#必须有序列化相同的函数名,只要函数名相同即可,参数任意def funx1(): print("**********")strjson=open("ww.txt","rb").read()#字符串转换为json对象dicjson=pickle.loads(strjson)print(dicjson["age"]) #输出:100dicjson["funx"]() #调用函数,输出:**********
Shelve(对pickle的上层封装)
序列化
import shelve#打开文件s=shelve.open("fileshelve")#建立列表数据listx=["11","22","33"]#保存数据s["listx"]=listxs["user"]="dongxiaodong"s["name"]="dong"#关闭文件s.close()
反序列化:
import shelve#打开文件s=shelve.open("fileshelve")print(s.get("listx")) #输出:['11', '22', '33']print(s.get("user")) #输出:dongxiaodong#关闭文件s.close()
加密与解密:
Base64 可逆
import base64#加密en=base64.b64encode("dongxiaodong".encode("utf-8"))print(en.decode("utf-8")) #输出字符串:ZG9uZ3hpYW9kb25n#解密de=base64.b64decode(en).decode("utf-8")print(de) #输出字符串:dongxiaodong
md5 不可逆
import hashlib#方法一mx=hashlib.md5() #s生成md5对象mx.update(b"dongxiaodong") #添加内容,拼接内容mx.update(b"dd")# 输出十六进制格式print(mx.hexdigest()) #输出:f67d530272ebb0cf17ec7cdf2372b6cb#方法二mx2=hashlib.md5(b"dongxiaodongdd") print(mx2.hexdigest()) #输出:f67d530272ebb0cf17ec7cdf2372b6cb
Sha1 不可逆
import hashlibs=hashlib.sha1()s.update(b"dongxiaodongdd")print(s.hexdigest()) #输出:6a878a19687fc95d76f602d1580b54e0f0d2b88d
Hmac
键值对进行加密
import hmac#参数(键,值)h=hmac.new(b"dd",b"dongxiaodong")#如果存在中文,则需要使用encode#h=hmac.new(b"dd","东小东dd".encode("utf-8"))print(h.hexdigest())