Python档案袋( Json、pickle、加密与解密)

时间:2022-06-23 06:43:21

Json是各程序通用的数据格式;pickle是Python特有的,可以存储很多Python特有的数据,如函数地址等

Json的简单使用:

 import json
jsondata={
"user":"dong",
"name":"dongxiaodong",
"age":100
}
#字典(json对象)转换为字符串
strjson=json.dumps(jsondata)
print(type(strjson)) #输出:<class 'str'> #字符串转换为json对象
dicjson=json.loads(strjson)
print(dicjson["age"]) #输出:100

Pickle

Pickle序列化:

 import pickle

 def funx1(valuex):
print("---------------",valuex) jsondata={
"user":"dong",
"name":"dongxiaodong",
"age":100,
"funx":funx1 #保存函数地址,函数地址是以函数名确定的
} #序列化,将字典转换为byte对象
bytejson=pickle.dumps(jsondata)
print(type(bytejson)) #输出:<class 'bytes'> #保存到文件中
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"]) #输出:100
dicjson["funx"]() #调用函数,输出:**********

Shelve(对pickle的上层封装)

序列化

import shelve

#打开文件
s=shelve.open("fileshelve") #建立列表数据
listx=["","",""] #保存数据
s["listx"]=listx
s["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 hashlib

s=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())