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

news/2024/9/18 3:44:46/文章来源:https://www.cnblogs.com/fujintao/p/18357568

一.加密讲解

加密算法:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/783419.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

25.python模块(加密,os,re)

一.加密讲解 加密算法: md5\rsa\AES\des\base (一)base64加解密 import base64 a=base64.b64encode(b"123456") print(a) #加密#bMTIzNDU2 b=base64.b64decode(bMTIzNDU2) print(b) #b123456http://encode.chahuo.com/ 在线加解密hashlib: md5\sha3_51\sha3_512()\s…

java异常体系

每天坚持,终会抵达!

海康网络相机C#封装库

前言 最近做项目过程中,使用到了海康相机,官方只提供了C/C++的SDK,没有搜寻到一个合适的封装了的库,故自己动手,简单的封装了一下,方便大家也方便自己使用和二次开发 项目地址:https://github.com/martixjohn/HikvisionNetworkCameraSdkForCsharp 项目结构 ├─Dlls/ │…

我们常用的地铁卡/银行卡,竟然运行着一个 Java 虚拟机

我们日常使用 NFC 卡可以用来刷地铁,进出门禁,但是你有没有想过, 当我们使用一个 NFC 的 IC 卡刷卡进入地铁的时候,此时系统是如何知道我这个卡上有多少充值余额的? 这个薄薄的 NFC 卡到底有什么魔力,除了可以刷卡进地铁,还可以去银行取钱,进出小区门禁。 今天我在看到…

Jenkins配置分布式构建环境——添加固定Agent并使用JNLP启动Agent详解

1、概述 在《Jenkins部署架构概述 》这篇博文中对Jenkins部署架构进行了讲解。对于分布式架构,Jenkins包括固态Agent和动态Agent两种方案。固定Agent(常用于虚拟机):Agent容器一直运行,任务构建完成后不会销毁,创建完成后将一直占用集群资源,配置过程较简单。 动态Agent…

在项目里快速运行史上最强开源大模型「Llama 3.1」

7月份,Meta正式发布迄今为止最强大的开源模型——Llama 3.1,包含了405B、70B和8B三个版本的模型。 作为开发者,如何在项目里快速运行LLaMa3.1大模型? 今天,我们结合英智未来自己的LLM推理API平台,给大家介绍一套免费实践流程。 免费使用地址:https://cognihub.baystone…

利用Jenkins Pipeline高效部署Kubernetes服务

什么是 Jenkins Pipeline Jenkins Pipeline是一种持续集成和持续交付(CI/CD)的功能,它允许开发者将复杂的构建、测试和部署流程编码为一系列称为“管道”的自动化步骤。这些步骤以Groovy脚本的形式编写,并且可以在Jenkins中可视化管理。Pipeline提供了代码化和可重用的构建…

DRM:清华提出无偏差的新类发现与定位新方法 | CVPR 2024

论文分析了现有的新类别发现和定位(NCDL)方法并确定了核心问题:目标检测器往往偏向已知的目标,忽略未知的目标。为了解决这个问题,论文提出了去偏差区域挖掘(DRM)方法,以互补的方式结合类无关RPN和类感知RPN进行目标定位,利用未标记数据的半监督对比学习来改进表征网络…

城市信息模型:构建未来智慧城市之基底座

在智慧城市的宏大叙事中,城市信息模型(City Information Model, CIM)平台如同城市智能的神经中枢,将数据、空间与技术深度融合,为城市规划、管理、服务、居民生活提供了前所未有的洞察与优化途径。CIM平台的构建不仅是技术的集成,更是智慧城市的灵魂,它以三维可视化、数…

8.10作业

代码:5秒后跳转马哥教育官网 如下:

ALV TABLE-COTROL

1.画屏幕 2.流逻辑CONTROLS gr_9112_control TYPE TABLEVIEW USING SCREEN 9112.PROCESS BEFORE OUTPUT.MODULE status_9112. *处理LOOP从内表读到表控制LOOP WITH CONTROL gr_9112_control.MODULE filltbl1_9112.ENDLOOP.PROCESS AFTER INPUT. *处理LOOP从表控制更新内表LOOP …

Tornado 龙卷风混币原理

项目背景 Tornado(https://tornado.cash/)是以太坊隐私赛道著名的混币项目,其混币技术主要使用了 zk-SNARK 零知识证明。 1、关于 zk-SNARK 零知识证明的原理可以参见 if(DAO) 之前的文章:https://mirror.xyz/0xd05cFA28Eaf8B4eaFD8Cd86d33c6CeD1a1875417/X3qSOjObTknXQ_iG…