常用模块(四)

一、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的更多相关文章

  1. Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  2. 简学Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  3. Python17个常用内置模块总结

    Python17个常用内置模块总结 1.getpass 2.os 3.sys 4.subprocess 5.hashlib 6.json 7.pickle 8.shutil 9.time 10.dat ...

  4. 常用内置模块(一)——time、os、sys、random、shutil、pickle、json

    常用内置模块 一.time模块 在python中,时间分为3种       1.时间戳: timestamp,从1970年1月1日到现在的秒数, 主要用于计算两个时间的差    2.localtime ...

  5. Python基础之模块:2、包的使用和软件开发目录规范及常用内置模块

    目录 一.包的使用 1.什么是包 2.包的具体使用 1.常规导入 2.直接导入包名 二.编程思想转变 1.面条阶段 2.函数阶段 3.模块阶段 三.软件目录开发规范 1.bin 2.conf 3.co ...

  6. iOS中常用的四种数据持久化方法简介

    iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...

  7. Python常用内置模块之xml模块

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

  8. python常用模块之subprocess

    python常用模块之subprocess python2有个模块commands,执行命令的模块,在python3中已经废弃,使用subprocess模块来替代commands. 介绍一下:comm ...

  9. 【温故知新】——原生js中常用的四种循环方式

    一.引言 本文主要是利用一个例子,讲一下原生js中常用的四种循环方式的使用与区别: 实现效果: 在网页中弹出框输入0   网页输出“欢迎下次光临” 在网页中弹出框输入1   网页输出“查询中……” 在 ...

  10. Java中常用的四种线程池

    在Java中使用线程池,可以用ThreadPoolExecutor的构造函数直接创建出线程池实例,如何使用参见之前的文章Java线程池构造参数详解.不过,在Executors类中,为我们提供了常用线程 ...

随机推荐

  1. 81、Tensorflow实现LeNet-5模型,多层卷积层,识别mnist数据集

    ''' Created on 2017年4月22日 @author: weizhen ''' import os import tensorflow as tf import numpy as np ...

  2. 55、saleforce 学习笔记二

    String goodsName = 'abcd1123汉字显示';//测试文本 System.debug('简化后的字符串名称为:'+goodsName.abbreviate(5)); //返回简化 ...

  3. MySQL高级学习笔记(五):查询截取分析

    文章目录 慢查询日志 是什么 怎么玩 说明 查看是否开启及如何开启 默认 开启 那么开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢? Case 配置版 日志分析工具mysqldumpsl ...

  4. StaticInjectorError[Http]:

    报错:AppComponent.html:28 ERROR Error: StaticInjectorError[Http]: StaticInjectorError[Http]: 解决方法:

  5. NMS python实现

    import numpy as np ''' 目标检测中常用到NMS,在faster R-CNN中,每一个bounding box都有一个打分,NMS实现逻辑是: 1,按打分最高到最低将BBox排序 ...

  6. Linux下的解压缩

    Linux下常见的压缩包格式有5种:zip tar.gz tar.bz2 tar.xz tar.Z 其中tar是种打包格式,gz和bz2等后缀才是指代压缩方式:gzip和bzip2 filename. ...

  7. FrameWork内核解析之PackageMS启动(一)下篇

    阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680 1. PackageMS相关框架类   ​   2.1 PackageM ...

  8. 大型项目必备IPC之其他IPC方式(二)

    阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680IPC的6种方式IPC是Inter-Process Communicati ...

  9. [Java Performance] 线程及同步的性能之线程池/ThreadPoolExecutors/ForkJoinPool

    线程池和ThreadPoolExecutors   虽然在程序中可以直接使用Thread类型来进行线程操作,但是更多的情况是使用线程池,尤其是在Java EE应用服务器中,一般会使用若干个线程池来处理 ...

  10. 硬RAID与软RAID的区别

    什么是RAID? RAID是英文Redundant Array of Independent Disks的缩写,翻译成中文即为独立磁盘冗余阵列,或简称磁盘阵列.简单的说,RAID是一种把多块独立的硬盘 ...