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') 
  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余十步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值