常用内置模块(四)——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类中,为我们提供了常用线程 ...
随机推荐
- python模块学习之HTMLTestRunner模块生成HTML测试报告
#!/usr/bin/env python #-*- coding:utf-8 -*- from HTMLTestRunner import HTMLTestRunner import time im ...
- 递归中,调用forEach方法问题
1 function traverse(objNmae,obj,url){ url = url || objNmae; if(typeof obj === "object" ){ ...
- centos 7 安装mysql5.7
1.进入到要存放安装包的位置 cd /home/lnmp 2.查看系统中是否已安装 MySQL 服务,以下提供两种方式: rpm -qa | grep mysql yum list installed ...
- strtotime 获取当月最后一天的日期
strtotime('last day of this month', $timestamp);
- 【教程】虚拟机安装CentOS 7 ping不通百度/并且使用Xshell 连接
最近需要在电脑虚拟机上安装CentOS 7 ,之前对虚拟机并不熟悉,捅咕了两天时间,如果终于安装成功. 之前遇到的坑:安装完CentOS 7 之后一直ping 不通www.baidu.com 网上查询 ...
- 2018-8-10-wpf-单例
title author date CreateTime categories wpf 单例 lindexi 2018-08-10 19:16:53 +0800 2018-2-13 17:23:3 + ...
- teb教程8
融合动态障碍物 简介:考虑怎样把其他节点发布的动态障碍物考虑进来 1.本部分演示了动态障碍物该如何被包含到teb_local_planner中. 2.写一个简单的动态障碍物的发布器publish_dy ...
- linux常用命令-1系统相关命令
hostname #计算机名 passwd #修改密码 reboot #重启 shutdown –r now #立刻重启(root用户使用) shutdown –r 10 #过10分钟自动重启(roo ...
- 三重循环之break
while(1) { while(1) { while(1) { break; } } } //逻辑堪比绝技啊 脑洞开之注册表循环遍历方法
- Ubuntu更换阿里云数据源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo vim /etc/apt/sources.list 将里面的内容全部删除修改成 ...