Python从0到POC编写--模块(二)

RE模块:

re 正则表达式模块,这个大家应该都比较熟悉。

语法:

re.match(pattern, string, flags=0)

其中:

pattern 是匹配的正则表达式

string 是要匹配的字符串。

flags 是标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。


正则表达式:

单字符匹配规则:

字符功能
.(点)匹配任意1个字符(除了\n)
[]匹配[]中列举的字符
\d匹配数字,0-9
\D匹配非数字,也就是匹配不是数字的字符
\s匹配空白符,也就是 空格\tab
\S匹配非空白符,跟 \s 相反
\w匹配数字、字母、下划线, a-z, A-Z, 0-9, _
\W匹配非数字、字母、下划线

数量匹配规则:

字符功能
*匹配0次或者多次,可有可无
+匹配至少1次
?匹配1次或者0次,要么有1次,要么没有
{m}匹配前一个字符出现m次
{m,}匹配前一个字符至少出现m次
{m,n}匹配前一个字符出现m到n次

边界符:

字符功能
^匹配字符串开头
$匹配字符串结尾
\b表示字母数字与非字母数字的边界
\B表示字母数字与(非非)字母数字的边界

常用函数:

方法/属性作用
re.match(pattern, string, flags=0)从字符串的起始位置匹配,如果起始位置匹配不成功的话,就返回none
re.search(pattern, string, flags=0)扫描整个字符串并返回第一个成功的匹配
re.findall(pattern, string, flags=0)匹配的所有字符串,并把他们作为一个列表返回
re.finditer(pattern, string, flags=0)表示字母数字与(非非)字母数字的边界
re.sub(pattern, repl, string, count=0, flags=0)替换匹配到的字符串

参数:

pattern : 匹配的正则表达式。

string : 要匹配的字符串。

flags : 用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

repl : 替换的字符串,也可作为一个函数。

count : 模式匹配后替换的最大次数,默认0表示替换所有匹配。


例1:


>>> import re
>>> r = re.match('www','www.baidu.com')
>>> print(r)
>>> # 输出 <re.Match object; span=(0, 3), match='www'>  span=(0, 3) 表示 匹配到的字符在0-3位,但不包含3
# 也可以 
>>> r = re.match('www','www.baidu.com').span()
>>> # 输出 (0,3)

例2:


>>> import re
>>> r = re.search('www','www.baidu.com').span()
>>> print(r)
>>> # 输出 (0, 3) 
>>> r = re.search('com','www.baidu.com').span()
>>> # 输出 (10,13)

例3:


>>> import re
>>> r = re.findall('\d','w1w2w.ba3id4u.co5m')  # \d 匹配数字
>>> print(r)
>>> # 输出 ['1', '2', '3', '4', '5']

例4:

语法: re.sub(要匹配的字符串,要替换的字符串,查找的值)


>>> import re
>>> url1 = 'www.baidu.com'   # 查找的值
>>> url2 = 'www.taobao.com'  # 要替换的字符串
>>> r = re.sub('www.baidu.com',url2,url1)
>>> print(r)
>>> # 输出 www.taobao.com 百度被替换成了淘宝

os模块

os 是一个获取和处理文件,目录 的模块,

下面列举一些比较常用的方法。


os.access() 查看文件是否有指定权限,有则返回True否则返回flase

语法: os.access(path, mode)

path 文件路径

mode 参数有:

F_OK (是否存在)

R_OK (可读)

W_OK (可写)

X_OK (可执行)


例:


>>> import os
>>> r = os.access('/python/test.py',os.F_OK)  #  判断文件是否存在
>>> print(r)
>>> # 输出 True

os.getcwd() 获取当前目录,即当前python脚本工作的目录路径

例:


>>> import os
>>> r = os.getcwd()  #  获取路径
>>> print(r)
>>> # 输出 C:\Users\administrator\Desktop

os.listdir() 获取指定目录下文件和目录的名称,跟 dir 命令一样

例:


>>> import os
>>> r = os.listdir('C:/')  #  获取目录和文件名
>>> print(r)

os.chdir() 切换工作目录到指定的路径下,成功返回True,失败返回False

例:


>>> import os
>>> r = os.chdir('../')  #  切换到上一级目录
>>> print(r)

os.mkdir(path, mode=511)

创建一个目录,并指定访问权限,在windows平台下, mode参数将会被忽略

默认的访问权限为 511,表示8进制的 0o777,即拥有者,用户组和其他用户均具有读、写和执行的权限。

例:


>>> import os
>>> r = os.mkdir('D:/test')  #  在D盘下创建一个test的目录
>>> print(r)

os.makedirs(name, mode=511, exist_ok=False)

递归地创建目录并设置访问权限,类似于linux中的 mkdir -p

权限跟上面一样

例:


>>> import os
>>> r = os.makedirs('D:/test/test')  #  在D盘下创建一个test的目录,然后在test目录再创建一个test目录
>>> print(r)

os.rmdir(path)

删除指定的目录,若目录非空及里面有文件,则抛出OSError异常。


>>> import os
>>> r = os.rmdir('D:/test')  #  删除D盘下的test目录
>>> print(r)

os.removedirs(path)

递归删除指定的目录。

若指定的是一个文件,则引发 NotADirectoryError 异常

若指定的目录不为空,则引发OSError异常。

例:


>>> import os
>>> r = os.removedirs('D:/test/test')  #  递归删除在D盘下的两个test目录
>>> print(r)

os.remove(path)

删除指定的文件。若 path 为一个目录,则引 PermissionError 异常

例:


>>> import os
>>> r = os.remove('D:/test.txt')  #  删除在D盘下的test.txt文件
>>> print(r)

os.rename(src, dst)

重命名文件或目录,如果dst是一个存在的目录, 将抛出OSError。

src – 要修改的目录名

dst – 修改后的目录名

例:


>>> import os
>>> r = os.rename('D:/test','D:/test2')  #  将D盘下的test目录重命名为test2
>>> print(r)

os.chown(path, uid, gid)

用于更改文件所有者,如果不修改可以设置为 -1

path – 设置权限的文件路径

uid – 所属用户 ID

gid – 所属用户组 ID

例如:


>>> import os
>>> r = os.chown('test.txt',0,0) # 设置文件的UID为0,root用户,GID为0,root组
>>> print(r)

os.system(“bash command”)

运行shell命令,直接显示

例如:


>>> import os
>>> r = os.system('dir')  # 执行 dir 命令 
>>> print(r)

os.chmod(path, mode)

用于更改文件或目录的权限

mode 参数有如下:

选项说明
stat.S_IXOTH其他用户有执行权 0o001
stat.S_IWOTH其他用户有写权限 0o002
stat.S_IROTH其他用户有读权限 0o004
stat.S_IRWXO其他用户有全部权限(权限掩码) 0o007
stat.S_IXGRP组用户有执行权限 0o010
stat.S_IWGRP组用户有写权限 0o020
stat.S_IRGRP组用户有读权限 0o040
stat.S_IRWXG组用户有全部权限(权限掩码) 0o070
stat.S_IXUSR拥有者具有执行权限 0o100
stat.S_IWUSR拥有者具有写权限 0o200
stat.S_IRUSR拥有者具有读权限 0o400
stat.S_IRWXU拥有者有全部权限(权限掩码) 0o700
stat.S_ISVTX目录里文件目录只有拥有者才可删除更改 0o1000
stat.S_ISGID执行此文件其进程有效组为文件所在组 0o2000
stat.S_ISUID执行此文件其进程有效用户为文件所有者 0o4000
stat.S_IREADwindows下设为只读
stat.S_IWRITEwindows下取消只读

例如:


>>> import os
>>> r = chmod("D:/test.txt", stat.S_IWOTH)  # 设置文件可以被其他用户写入
>>> print(r)

os 模块就写这么多吧!


sys模块:

之前也有提到这个模块

sys.argv 接收命令行参数,生成一个List,第一个元素是程序本身路径

例如:


>>> test.py https://www.baidu.com/ 
>>> import sys
>>> r = sys.argv[0]  # 获取脚本名
>>> print(r)  # 输出 test
>>> r2 = sys.argv[1]  # 获取第一个参数
>>> print(r2)  # 输出 https://www.baidu.com/

shell:

python执行shell命令有几个方法

1. os.system()

前面有提到过这种方法。

语法: os.system(“command”)

例如:


>>> import os
>>> r = os.system('dir')  # 执行 dir 命令 
>>> print(r)

2. os.popen(command,mode)

通过 os.popen() 返回的是 file read 的对象,

对其进行读取 read() 的操作可以看到执行的输出。但是无法读取程序执行的返回值

例如:


>>> import os
>>> r = os.popen('dir')  # 执行 dir 命令 
>>> print(r.read())

需要使用 read() 方法


3. subprocess 模块

使用 subprocess 模块的 getoutput 方法,

主要方法:

subprocess.getstatusoutput(cmd) 返回(status, output)

subprocess.getoutput(cmd) 只返回输出结果

subprocess.getstatus(file) 返回ls -ld file的执行结果字符串,调用了getoutput,不建议使用此方

例如:


>>> import subprocess
>>> r = subprocess.getstatusoutput('dir')  # 执行 dir 命令 
>>> print(r)
>>> (0, '-rw-r--r-- 1 long long 6030829 Jan 5 21:34 log') 

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

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

相关文章

Node 学习-1

版本查看命令 //查看node 版本号 node -v //同理&#xff1a;查看npm版本号 npm -v //进入node模式&#xff0c;需要在终端输入node 并回车//npm 安装模块命令&#xff0c;添加-g是全局安装 npm install 模块名 #本地安装 npm install 模块名 -g #全局安装Node.js 应用 由…

【GESP】2024年03月图形化二级 -- 找因数

找因数 【题目描述】 默认小猫角色和白色背景。 小杨最近刚刚学习了因数的概念&#xff0c;具体来说&#xff0c;如果一个正整数 a a a 可以被另一个正整数 b b b 整除&#xff0c;那么我们就说 b b b 是 a a a 的因数&#xff0c;例如6可以被1、2、3、6整除&#xff0c;…

Linux x86_64 backtrace 栈回溯

文章目录 前言一、demo演示二、函数解析2.1 backtrace函数2.2 backtrace_symbols 前言 Linux x86_64 基于FP栈回溯请参考&#xff1a;Linux x86_64 dump_stack&#xff08;&#xff09;函数基于FP栈回溯 回溯&#xff08;backtrace&#xff09;是指当前线程中正在活动的函数调…

通过物联网管理多台MQTT设备-基于米尔T527开发板

本篇测评由电子工程世界的优秀测评者“JerryZhen”提供。 本文将介绍基于米尔电子MYD-LT527开发板的网关方案测试。 一、系统概述 基于米尔-全志 T527设计一个简易的物联网网关&#xff0c;该网关能够管理多台MQTT设备&#xff0c;通过MQTT协议对设备进行读写操作&#xff0c;…

i春秋-Test

题目 解题 参考WP https://blog.csdn.net/qq_40654505/article/details/107142533/目录扫描 复现wp payload为&#xff1a; search.php?searchtype5&tid&areaeval($_POST[cmd])使用蚁剑连接 http://eci-2ze4iyhwj7xvb68bsb2t.cloudeci1.ichunqiu.com:80/search.ph…

python - pip安装及使用详解

pip 是 Python 的一个包管理器&#xff0c;它使安装和管理额外的库变得非常方便。通过 pip&#xff0c;你可以轻松地安装、升级、卸载 Python 包。下面将详细介绍如何在 Python 中使用 pip 进行安装及基本使用。 安装 pip 对于 Windows 用户&#xff1a; 较新版本的 Python&a…

在 Navicat 17 中探索表配置文件

距离 Navicat 17&#xff08;英文版&#xff09;的发布还有不到一周的时间&#xff0c;现在是深入研究新的表配置文件功能的最佳时机。它允许我们保存经常用于表的筛选、排序和列显示的不同组合。所以&#xff0c;事不宜迟&#xff0c;让我们开始吧&#xff01; 创建表配置文件…

leetcode——反转链表

206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;创建三个指针n1,n2,n3&#xff0c;遍历原链表&#xff0c;通过三者之间的关系将链表反转。下面给出图示&#xff1a; 下面给出题解代码&#xff1a; typedef struct ListNode ListNode; struct List…

超分概述以及超分数据集

参考文献 数据集 数据集名称图像数量/张合成/真实数据集&#xff08;训练集/验证集/测试集图像格式图像内容T9191合成数据集&#xff08;训练集&#xff09;PNG包括动植物、人、车等局部纹理图像Timofte110合成数据集&#xff08;训练集&#xff09;PNG包括T91&#xff0c;Se…

Excel生成符合标准正态分布的随机数

在Excel中&#xff0c;生成符合标准正态分布的随机数可以使用NORM.INV()函数配合RAND()函数来实现。以下是具体的操作步骤&#xff1a; 使用RAND()函数生成均匀分布的随机数&#xff1a; RAND()函数会返回一个0到1之间的随机小数&#xff0c;包括0但不包括1。这代表了一个均匀分…

parallels desktop19最新免费Mac电脑虚拟机软件

Parallels Desktop是一款运行在Mac电脑上的虚拟机软件&#xff0c;它允许用户在Mac系统上同时运行多个操作系统&#xff0c;比如Windows、Linux等。通过这款软件&#xff0c;Mac用户可以轻松地在同一台电脑上体验不同操作系统的功能和应用程序&#xff0c;而无需额外的硬件设备…

自拍欺骗成为流行的身份证件欺诈技术

据 Socure 称&#xff0c;文档图像叠加是 2023 年最流行的身份证件欺诈技术&#xff0c;在所有被拒绝的身份证件中&#xff0c;有 63% 发生这种情况。 自拍欺骗和冒充在与文件相关的身份欺诈中占主导地位 当用户拍摄照片或使用 ID 的屏幕截图图像&#xff08;而不是提供文档的…

26、Flink 的状态数据结构升级

状态数据结构升级 a&#xff09;概述 Flink 流应用通常被设计为永远或者长时间运行&#xff0c;与所有长期运行的服务一样&#xff0c;应用程序需要随着业务的迭代而进行调整&#xff0c;应用所处理的数据 schema 也会随着进行变化。 升级状态类型的数据 schema &#xff0c…

探索 Docker Machine:打造无缝多平台容器部署的利器

在当今的软件开发和部署领域&#xff0c;容器化技术已经成为了一种不可或缺的利器&#xff0c;而 Docker Machine 则是这个强大生态系统中的一颗璀璨明珠。随着应用程序的不断发展和多样化&#xff0c;开发者们需要在不同的平台上进行部署&#xff0c;而 Docker Machine 提供了…

信息系统项目管理师(高项)--学习笔记【第2章:信息技术发展】

目录 第2章 信息技术发展2.1 信息技术及其发展2.1.1计算机软硬件2.1.2计算机网络2.1.3存储和数据库2.1.4信息安全2.1.5信息技术的发展 2.2 新一代信息技术及应用2.2.1物联网2.2.2云计算2.2.3大数据2.2.4区块链2.2.5人工智能2.2.6虚拟现实 第2章 信息技术发展 2.1 信息技术及其…

初始Java篇(JavaSE基础语法)(8)认识String类(上)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaSE 简单介绍&#xff1a;在C语言中已经涉及到字符串了&#xff0c;但是在C语言中要表示字符串只能使用字符数组或者字符指针&#xff0c;可…

leetcode算法笔记-算法复杂度

对于时间复杂度&#xff0c;主要包括三种情况&#xff1a; 渐进紧确界&#xff1a; O渐进上界&#xff1a; 渐进下界&#xff1a; 加法原则&#xff1a;不同的时间复杂度相加取阶数最高的 乘法原则&#xff1a;不同的时间复杂度相乘&#xff0c;结果为时间复杂度的乘积 阶乘…

电脑nvidia驱动和合适版本的duda--自用 回忆版

参考文献&#xff1a;http://t.csdnimg.cn/ecDuG 内容很多抄的这个&#xff0c;主要害怕链接失效 一、Ubuntu 18.04 安装NVIDIA显卡驱动 1、查看本机显卡能够配置的驱动信息 ubuntu-drivers devices所以可以看出&#xff0c;推荐 nvidia-driver-530 - distro non-free 2、安…

Kubernetes学习-深入Pod篇(一) 创建Pod,Pod配置文件详解

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Kubernetes渐进式学习-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 1.前言 我们在前面的文章讲解了Kubernetes的核心概念和服务部署&#x…

MyBatis-plus(一):快速入门

目录 一、MyBatis-plus 快速入门 1、原理 2、实体类命名规则 3、常见注解 4、主键 id 策略 5、使用 TableField 的常见场景 6、常用配置 二、核心功能 1、条件构造器 2、自定义 SQL 3、IService 接口 一、MyBatis-plus 快速入门 1、原理 MyBatisPlus 通过扫描实体…