一.加密讲解
加密算法:
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'>