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

2024-05-12 07:44
文章标签 python 模块 编写 poc

本文主要是介绍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') 

这篇关于Python从0到POC编写--模块(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/982012

相关文章

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主