Python subprocess库的使用详解

 更新时间:2018年10月26日 14:30:37   作者:BrownFly  
这篇文章主要介绍了Python subprocess库的使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

介绍

使用subprocess模块的目的是用于替换os.system等一些旧的模块和方法。

运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。

subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用。另外subprocess还提供了一些管理标准流(standard stream)和管道(pipe)的工具,从而在进程间使用文本通信。

导入模块

>>> import subprocess

命令执行call()

执行由参数提供的命令,把数组作为参数运行命令。其功能类似于os.system(cmd)。

>>> subprocess.call(['ls','-l')

其中参数shell默认为False。

在shell设置为True时,可以直接传字符串:

>>> subprocess.call('ls -l',shell=True)

获得返回结果check_output()

call()是不返回显示的结果的,可以使用check_ouput()来获得返回的结果:

>>> result = subprocess.check_output(['ls','-l'],shell=True)
>>> result.decode('utf-8')

进程创建和管理Popen类

subprocess.popen代替os.popen。可以创建一个Popen类来创建进程和进行复杂的交互。

创建不等待的子进程

import subprocess

child = subprocess.Popen(['ping','-c','4','www.baidu.com'])
print('Finished')

添加子进程等待

import subprocess

child = subprocess.Popen(['ping','-c','4','www.baidu.com'])
child.wait() # 等待子进程结束
print('Finished')

添加了wait()后,主进程会等待子进程结束再执行下面的语句。

子进程文本流控制

标准输出重定向:

import subprocess

child = subprocess.Popen(['ls','-l'],stdout=subprocess.PIPE)    #将标准输出定向输出到subprocess.PIPE
print(child.stdout.read()) 

使用stdin与其配合使用:

import subprocess

child1 = subprocess.Popen(['cat','/etc/passwd'],stdout=subprocess.PIPE)
child2 = subprocess.Popen(['grep','root'],stdin=child1.stdout,stdout=subprocess.PIPE)

print child2.communicate()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Django 框架模型操作入门教程

    Django 框架模型操作入门教程

    这篇文章主要介绍了Django 框架模型操作,结合实例形式分析了Django框架相关的数据库配置、数据增删改查等操作技巧,需要的朋友可以参考下
    2019-11-11
  • Python reduce函数作用及实例解析

    Python reduce函数作用及实例解析

    这篇文章主要介绍了Python reduce函数作用及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • python判断列表为空的三种方法总结

    python判断列表为空的三种方法总结

    这篇文章主要介绍了python判断列表为空的三种方法总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 详解如何用Python登录豆瓣并爬取影评

    详解如何用Python登录豆瓣并爬取影评

    这篇文章主要介绍了如何用Python登录豆瓣并爬取影评,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • VSCODE配置Markdown及Markdown基础语法详解

    VSCODE配置Markdown及Markdown基础语法详解

    这篇文章主要介绍了VSCODE配置Markdown及Markdown基础语法详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 如何使用Python对日期和时间进行排序

    如何使用Python对日期和时间进行排序

    本文将教我们如何使用Python对日期和时间进行排序,我们还将学习datetime模块和sorted方法,本文结合示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2023-06-06
  • Python数组条件过滤filter函数使用示例

    Python数组条件过滤filter函数使用示例

    数组条件过滤简洁实现方式,使用filter函数,实现一个条件判断函数即可,示例代码如下
    2014-07-07
  • python标准算法实现数组全排列的方法

    python标准算法实现数组全排列的方法

    这篇文章主要介绍了python标准算法实现数组全排列的方法,实例分析了全排列的原理与Python实现技巧,需要的朋友可以参考下
    2015-03-03
  • python openpyxl模块的使用详解

    python openpyxl模块的使用详解

    这篇文章主要介绍了python openpyxl模块的使用详解,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02
  • Python如何设置指定窗口为前台活动窗口

    Python如何设置指定窗口为前台活动窗口

    这篇文章主要介绍了Python如何设置指定窗口为前台活动窗口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08

最新评论