一.加密講解
加密演算法:
md5\rsa\AES\des\base
(一)base64加解密
import base64
a=base64.b64encode(b"123456")
print(a) #加密#b'MTIzNDU2'
b=base64.b64decode(b'MTIzNDU2')
print(b) #b'123456'
http://encode.chahuo.com/ 線上加解密
hashlib: md5\sha3_51\sha3_512()\sha3_256()
(2) md5 是一中演算法,可以將一個字元傳串,檔案,透過md5生成字串,唯一字串
MD5 在python3中歸納到hashlib 模組中
import hashlib
m=hashlib.md5() #建立一個md5物件
m.update(b"123456")
print(m.hexdigest()) #e10adc3949ba59abbe56e057f20f883e 十六進位制的字串
(3)sha3_256()加密
import hashlib
m=hashlib.sha3_256() #建立一個md5物件
m.update(b"123456")
print(m.hexdigest()) #d7190eb194ff9494625514b6d178c87f99c5973e28c398969d2233f2960a573e
(4)sha3_512 加密
import hashlib
m=hashlib.sha3_512() #建立一個md5物件
m.update(b"123456")
print(m.hexdigest()) #64d09d9930c8ecf79e513167a588cb75439b762ce8f9b22ea59765f32aa74ca19d2f1e97dc922a3d4954594a05062917fb24d1f8e72f2ed02a58ed7534f94d27
(5)ha3_384() 加密
import hashlib
m=hashlib.sha3_384() #建立一個md5物件
m.update(b"123456")
print(m.hexdigest()) #1fb0da774034ba308fbe02f3e90dc004191df7aec3758
作用:
1.加密在工作中可以對資料進行比對;(大量資料的比對)
加密: 10萬條數 ,加密 =====>傳輸給對方,
解密:解密不一致,資料發生變化,
作業:
1\透過md5 將隨機生成的驗證碼進行加密輸出
os模組
一.os使用語句
import os
print(os.getcwd()) #獲取當前執行命令所在的目錄
import os
b_path=r"C:\Users\Administrator.USER-20231114RR\PycharmProjects\untitled8\bao"
py_path=r"C:\Users\Administrator.USER-20231114RR\PycharmProjects\untitled8\bao\mk.py"
bcz_path=r"C:\Users\Administrator.USER-20231114RR\PycharmProjects\untitled8\bao\abcde.py"
new_path=r"E:\az\ss1"
new1_path=r"E:\az\ss2\vv.txt"
# print(os.getcwd()) #獲取當前執行語句的目錄
# print(os.path.isfile(b_path)) #判斷是否一個檔案 #False
# print(os.path.isfile(py_path)) #True
# print(os.path.isdir(b_path)) #True判斷是否一個目錄
# print(os.path.isdir(py_path))#False
# print(os.path.exists(b_path)) #True 判斷檔案是否存在
# print(os.path.exists(bcz_path)) #False 判斷檔案是否
# print(os.listdir(b_path)) #顯示目錄下所有檔案或目錄
# print(os.path.split(b_path)) # 分割檔名和目錄('C:\\Users\\Administrator.USER-20231114RR\\PycharmProjects\\untitled8', 'bao')
# print(os.path.join(b_path,"dd.py")) #拼接路徑
# print(os.mkdir(new_path)) # 新建目錄
# print(os.rename(new_path,new1_path))#修改目錄名
print(os.remove(new1_path)) #刪除檔案
擴充:
print(os.path.dirname(__file__))#獲取包當前包的路徑
print(os.path.dirname(os.path.abspath(__file__))) ##獲取包當前包的路徑
print(os.getcwd()) #獲取包當前包的路徑
print(os.path.dirname(os.path.dirname(__file__))) #獲取當前專案路徑
print(os.path.abspath(__file__)) #獲取絕對路徑
re模組
一.re 模組的介紹
1.什麼是正規表示式"
定義:正規表示式是一種對字元和特殊字元操作的一種邏輯公式,從特定的字元中,用正則表達字元來過濾的邏輯。(也是一種文字模式;)
2、正規表示式可以幫助我們檢查字元是否與某種模式匹配
3、re表示式作用?
快速高效查詢和分析字元比對自讀,也叫模式匹配,比如:查詢,比對,匹配,替換,插入,新增,刪除等能力。
4.格式:
import re
====================================================
二、認識正規表示式中的特殊元素?
\d:數字0-9
\D:非數字
\s:空白字元
\n:換行符
\w 匹配字母數字
\W 匹配非字母數字
^:表示的匹配字元以什麼開頭
$:表示的匹配字元以什麼結尾
:匹配前面的字元0次或n次 eg:ab (* 能匹配a 匹配ab 匹配abb )
+:匹配+前面的字元1次或n次
?:匹配?前面的字元0次或1次
{m}:匹配前一個字元m次
{m,n}:匹配前一個字元m到n次(包括n次),m或n可以省略,mn都是
====================================================
常用的四種方法
1、findall
從第一個字元開始查詢,找到全部相關匹配為止,找不到返回一個空列表[]
2、match
從第一個字元開始匹配,如果第一個字元不是要匹配的型別、則匹配失敗得到一個none值
注意:如果規則帶了’+’,則匹配1次或者多次,無’+'只匹配一次
3、search
從第一個字元開始查詢、一找到就返回第一個字串,找到就不往下找,找不到則報錯
4、compile(不考慮,也不講)
編譯模式生成物件,找到全部相關匹配為止,找不到返回一個列表[]
====================================================
三\案例:
1、findall
從第一個字元開始查詢,找到全部相關匹配為止,找不到返回一個空列表[]
import re
s="abcdeemtppppaa"
dx=re.findall("a",s)
print(dx)
2、match
從第一個字元開始匹配,如果第一個字元不是要匹配的型別、則匹配失敗得到一個none值
注意:如果規則帶了’+’,則匹配1次或者多次,無’+'只匹配一次
import re
s="ab2cdeem2tpp1ppaa"
dx=re.match("a",s)
print(dx)
3、search
從第一個字元開始查詢、一找到就返回第一個字串,找到就不往下找,找不到則報錯
import re
s="b2cdeem2tpp1ppaa"
dx=re.search("a",s)
print(dx)
====================================================
四\特殊符號的使用
(1)\d:數字0-9
import re
s="b2cdeem2tpp1ppaa"
dx=re.findall("\d",s)
print(dx)
(2)\D:非數字
import re
s="b2cdeem2tpp1ppaa"
dx=re.findall("\D",s)
print(dx) #['b', 'c', 'd', 'e', 'e', 'm', 't', 'p', 'p', 'p', 'p', 'a', 'a']
(3)\s:空白字元
import re
s="b2c deem 2tpp1ppaa"
dx=re.findall("\s",s)
print(dx)
(4)\n:換行符
import re
s="b2c de\nem 2tpp1pp\naa"
dx=re.findall("\n",s)
print(dx)
\w 匹配字母數字
\W 匹配非字母數字
^:表示的匹配字元以什麼開頭
import re
s="ab!##%2c de\nem 2tpp1pp\naa"
dx=re.findall("^a",s)
print(dx)
$:表示的匹配字元以什麼結尾
:匹配前面的字元0次或n次 eg:ab ( 能匹配a 匹配ab 匹配abb )
import re
s="ab!##%2c de\nem 2tpp1aaapp\naa"
dx=re.findall("a*",s)
print(dx)
+:匹配+前面的字元1次或n次
import re
s="ab!##%2c de\nemaaaaaaa 2tpp1aaapp\naa"
dx=re.findall("a+",s)
print(dx)
?:匹配?前面的字元0次或1次
import re
s="ab!##%2c de\nemaaaaaaa 2tpp1aaapp\naa"
dx=re.findall("a?",s)
print(dx)
{m}:匹配前一個字元m次]
import re
s="ab!##%2c de\nemaa 2tpp1aaapp\naa"
dx=re.findall("a{3}",s)
print(dx)
{m,n}:匹配前一個字元m到n次(包括n次),m或n可以省略,mn都是
import re
s="ab!##%2c de\nemaa 2tpp1aaapp\naaaaa"
dx=re.findall("a{1,5}",s)
print(dx)
=======================================================
re 識別符號號: 不區分大小寫
import re
s="ab!##%2c de\nemaa 2tpp1aAApp\naaaaa"
dx=re.findall("a{1,5}",s,flags=re.I)
print(dx)
=======================================================
sub 替換:
import re
s="ab!##%2c de\nemaa 2tpp1aAApp\naaaaa"
dx=re.sub("\d","8",s,flags=re.I)
print(dx)
JSON模組
一.json模組的介紹
1.定義:json是一個輕量級的文字資料互動格式
2.json和字典相似
3.json模組的作用:
(1)序列化
將python物件轉換成json格式資料
dump () dumps()
(2)反序列化
將json格式轉換成python物件
load () ,loads()
二、實操
1、透過dumps 將pyton中的字典物件轉換成json格式
import json
d={"name":"zs","age":18}
print(d) #{'name': 'zs', 'age': 18}
print(type(d)) #<class 'dict'>
js=json.dumps(d)
print(js) #{"name": "zs", "age": 18}
2、透過dump 將pyton中的物件轉成json格式儲存到文件中
import json
d={"name":"zs","age":18,"isonly":True}
url=r"C:\Users\Administrator.USER-20231114RR\PycharmProjects\untitled8\bao\xx1.json"
js=json.dump(d,open(url,"w"))
3、loads 將json格式轉換成字典格式
import json
j='{"name":"zs","age":18}'
print(type(j))#<class 'str'>
print(j) #{"name":"zs","age":18}
d1=json.loads(j)
print(type(d1)) #<class 'dict'>
4、
import json
lj=r"C:\Users\Administrator.USER-20231114RR\PycharmProjects\untitled8\bao\xx1.json"
d1=json.load(open(lj,"r"))
print(d1)
print(type(d1)) #<class 'dict'>