Python檔案袋( Json、pickle、加密與解密)


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)) #輸出:<class 'str'>
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)) #輸出:<class 'bytes'>
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"]) #輸出:100
dicjson["funx"]() #調用函數,輸出:**********

Shelve(對pickle的上層封裝)

序列化

import shelve

#打開文件
s=shelve.open("fileshelve")

#建立列表數據
listx=["11","22","33"]

#保存數據
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())


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM