25.python模組(加密,os,re,json)

藕丝鲜芋發表於2024-08-13

一.加密講解

加密演算法:

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'>

相關文章