常用内置模块(四)——subprocess、re
常用模块(四)
一、subprocess模块
1、subprocess为子流程模块,用于执行系统命令,该模块在Python全栈开发中不常用
2、常用方法
run 返回一个表示执行结果的对象
call 返回的执行的状态码
import subprocess res = subprocess.run("tasklist",shell=True,stdout=subprocess.PIPE)
print(res.stdout.decode("gbk")) print(res.stderr) res = subprocess.call("tasklist",shell=True)
print(res)
run方法与callt方法
3、Popen()方法
# 第一个进程a读取tasklist的内容,将数据交给另一个进程b,进程b将数据写到文件中
res1 = subprocess.Popen("tasklist",stdout=subprocess.PIPE,shell=True,stderr=subprocess.PIPE) res2 = subprocess.Popen("echo >a.txt", stdout=subprocess.PIPE, shell=True, stderr=subprocess.PIPE,stdin=res1.stdout) print(res2.stdout.read().decode("gbk"))
二、re模块
1、什么是re
re是正则表达式,正则表达式是一些带有特殊意义的符号或符号的组合
2、常用匹配模式
最常用的有:
单个字符匹配:
\w 字母数字下划线
\s 所有不可见字符(\n \t \f)
\d 所有数字
. 除了\n以外的所有字符
^ 字符串的开头,写在表达式的前面
$ 字符串的末尾,写在表达式的后面 范围匹配:
[abc] 括号内的一个字符
a|b a或b 重复匹配
{} {,m}:0到m之间, {m,n}:m到n之前 , {m}:必须是m
+ 匹配1个或多个,会一直匹配到不满足条件为止,用“?”问号来阻止贪婪匹配(匹配最少满足条件的字符数)
* 匹配0个或多个,会一直匹配到不满足条件为止,用“?”问号来阻止贪婪匹配(匹配最少满足条件的字符数)
? 匹配1个或0个 分组
() 匹配括号内的表达式,提取括号中的表达式,不会改变原来的表达式逻辑意义
取消分组
(?: )
import re src = 'abc_d12 3d d5s\nd' # \d 所有数字
print(re.findall('\d', src))
# ['1', '2', '3', '5'] # \w 所有数字字母下划线
print(re.findall('\w', src))
# ['a', 'b', 'c', '_', 'd', '1', '2', '3', 'd', 'd', '5', 's', 'd'] # \s 所有不可见字符
print(re.findall('\s', src))
# [' ', ' ', '\n'] # . 所有除了\n以外的字符
print(re.findall('.', src))
# ['a', 'b', 'c', '_', 'd', '1', '2', ' ', '3', 'd', ' ', 'd', '5', 's', 'd']? # ^ 匹配行首指定字符
print(re.findall('^a', src))
# ['a'] # $ 匹配行尾指定的字符
print(re.findall('d$', src))
# ['d'] # [abd] 匹配中括号内的任意一个字符(a到d,1到3)
print(re.findall('[a-d1-3]', src))
# ['a', 'b', 'c', 'd', '1', '2', '3', 'd', 'd', 'd']
print(re.findall('[^a-d]', src)) # 匹配除了a-d以外的字符
# ['_', '1', '2', ' ', '3', ' ', '5', 's', '\n'] # {m,n}
print(re.findall('d{1,3}', 'd dd ddd dddd'))
# ['d', 'dd', 'ddd', 'ddd', 'd'] # + 1个或多个
print(re.findall('d+', 'd dd ddd dddd'))
# ['d', 'dd', 'ddd', 'dddd'] # * 0个或多个
print(re.findall('d*', 'd dd ddd dddd'))
# ['d', '', 'dd', '', 'ddd', '', 'dddd', ''] # ? 0个或1个
print(re.findall('\d?', 'd 21dd_\n4'))
# ['', '', '1', '2', '', '', '', '', '4', '']
常用符号
# 贪婪匹配 * + 不是固定的特殊符号 只是一种现象
# 会一直匹配到不满足条件为止 用问号来阻止贪婪匹配(匹配最少满足条件的字符数) print(re.findall("\w+?", "ajshsjkdsd"))
# ['a', 'j', 's', 'h', 's', 'j', 'k', 'd', 's', 'd'] print(re.findall("\w*?", "ajshsjkdsd"))
# ['', '', '', '', '', '', '', '', '', '', ''] print(re.findall("\w+?s", "ajshsjkdsd"))
# ['ajs', 'hs', 'jkds'] print(re.findall("\w*?s", "ajshsjkdsd"))
# ['ajs', 'hs', 'jkds']
贪婪匹配和阻止贪婪
3、re模块的常用方法
(1).findall 从左往右查找所有满足条件的字符 返回一个列表
(2).search 返回第一个匹配的字符串,结果封装为对象
(3).match(不常用) 匹配行首, 返回值与search相同
(4).compile(不常用) 将正则表达式封装为一个正则对象,可以重复使用这个表达式
import re print(re.findall('\w', src))
# ['a', 'b', 'c', '_', 'd', '1', '2', '3', 'd', 'd', '5', 's', 'd'] print(re.search('hello','weqwe hello dddd helllo dd'))
# <_sre.SRE_Match object; span=(6, 11), match='hello'> print(re.match("hello"," world hello python"))
# None
方法
4、分组
分组是从左边第一个左括号起,,index逐步增加,下面的1-4就是res=re.match(r"((a(b)c)(def))","abcdef")
ts = "abcdef"
reg = r"((a(b)c)(def))"
regex = re.compile(reg)
res = regex.match(ts)
print(res)
print(res.span()) # 匹配的结果的区间
print(res.group(0)) # abcdef
print(res.group(1)) # 1 -> 第一个() abcdef
print(res.group(2)) # abc
print(res.group(3)) # b
print(res.group(4)) # def
print(res.groups()) # ('abcdef','abc','b','def')
常用内置模块(四)——subprocess、re的更多相关文章
- Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- 简学Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- Python17个常用内置模块总结
Python17个常用内置模块总结 1.getpass 2.os 3.sys 4.subprocess 5.hashlib 6.json 7.pickle 8.shutil 9.time 10.dat ...
- 常用内置模块(一)——time、os、sys、random、shutil、pickle、json
常用内置模块 一.time模块 在python中,时间分为3种 1.时间戳: timestamp,从1970年1月1日到现在的秒数, 主要用于计算两个时间的差 2.localtime ...
- Python基础之模块:2、包的使用和软件开发目录规范及常用内置模块
目录 一.包的使用 1.什么是包 2.包的具体使用 1.常规导入 2.直接导入包名 二.编程思想转变 1.面条阶段 2.函数阶段 3.模块阶段 三.软件目录开发规范 1.bin 2.conf 3.co ...
- iOS中常用的四种数据持久化方法简介
iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...
- Python常用内置模块之xml模块
xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...
- python常用模块之subprocess
python常用模块之subprocess python2有个模块commands,执行命令的模块,在python3中已经废弃,使用subprocess模块来替代commands. 介绍一下:comm ...
- 【温故知新】——原生js中常用的四种循环方式
一.引言 本文主要是利用一个例子,讲一下原生js中常用的四种循环方式的使用与区别: 实现效果: 在网页中弹出框输入0 网页输出“欢迎下次光临” 在网页中弹出框输入1 网页输出“查询中……” 在 ...
- Java中常用的四种线程池
在Java中使用线程池,可以用ThreadPoolExecutor的构造函数直接创建出线程池实例,如何使用参见之前的文章Java线程池构造参数详解.不过,在Executors类中,为我们提供了常用线程 ...
随机推荐
- Spring JDBC FOUND_ROWS 安全吗?
在很多分页的程序中都这样写: SELECT COUNT(*) from `table` WHERE ......; 查出符合条件的记录总数 SELECT * FROM `table` WHERE . ...
- Python数字类型及数学运算
1.数字类型分为int.float和complex,complex暂时用不到,int和float的相关运算和类型转换如下: >>> 59+12 71 >>> 59- ...
- Cocos2d-x之Director
| 版权声明:本文为博主原创文章,未经博主允许不得转载. Director类简介 在Cocos2d-x-3.x引擎中,采用节点树形结构来管理游戏对象,一个游戏可以划分为不同的场景,一个场景又可以分 ...
- vue自定义指令clickoutside实现点击其他元素才会触发
clickoutside.js // 代码内容 const clickoutsideContext = '@@clickoutsideContext'; export default { bind(e ...
- ansible了解
基础知识: ansible简介 ansible 是个什么东西呢?基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言,更强的远程命令 ...
- Android apiDemo 学习——对话框AlertDialogSamples
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zpf8861/article/details/31423049 注意:该代码仅仅适用于当次简单调用对 ...
- 装完某些软件之后IE主页被https://www.hao123.com/?tn=93453552_hao_pg劫持
今天重装电脑,装完某些软件之后发现IE主页被https://www.hao123.com/?tn=93453552_hao_pg劫持,然后百度各种解决方法都没用,甚至是修改注册表依然没啥用 最后忽然看 ...
- Vue.js 入门:从零开始做一个极简 To-Do 应用
Vue.js 入门:从零开始做一个极简 To-Do 应用 写作时间:2019-12-10版本信息:Vue.js 2.6.10官网文档:https://cn.vuejs.org/ 前言 学习 Vue ...
- bzoj 3517翻硬币
我们lv老师有点毒瘤啊... n为偶数... 离AC只差一张草稿纸233 挖个坑...
- Redis Desktop Manager连接Redis 遇到的一系列问题
最近在做一个土地项目的后台,主要是一个信息采集调查系统,使用的框架是: * 核心框架:Spring Framework 4.2 * 日志管理:SLF4J 1.7.Log4j 1.2 * 视图框架:Sp ...