zoukankan      html  css  js  c++  java
  • Python标准库之subprocess模块

    运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。 subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用。另外subprocess还提供了一些管理标准流(standard stream)和管道(pipe)的工具,从而在进程间使用文本通信。

    subprocess.call()

    父进程等待子进程完成

    import subprocess
    
    a = subprocess.call(['ipconfig','/all'])
    print(a)
    #执行命令,如果命令结果为0,就正常返回,否则抛异常

      

    getstatusoutput()

    接收字符串格式命令,返回元组形式,第1个元素是执行状态,第2个是命令结果

    import subprocess
    
    a = subprocess.getstatusoutput("whoami")
    print(a)
    #输出
    (0, 'desktop-xxxx\admin')
    

      

    getoutput()

    接收字符串格式命令,并返回结果。

    import subprocess
    
    a = subprocess.getoutput("whoami")
    print(a)
    #输出
    desktop-xxxxadmin

      

    check_output()

    执行命令,并返回结果,下例结果返回给a。

    import subprocess
    
    a = subprocess.check_output(['ipconfig','/all'])
    print(a)
    

      

    Popen()

    上面的几个函数都是基于Popen()的封装(wrapper)。这些封装的目的在于让我们容易使用子进程。当我们想要更个性化我们的需求的时候,就要转向Popen类,该类生成的对象用来代表子进程。

    import subprocess
    
    a = subprocess.Popen(['ping','-c','1','www.baidu.com'],shell=True)
    a.wait()
    

      

  • 相关阅读:
    eclipse常用的快捷键
    如何保留小数点后N位?
    EditText设置/隐藏光标位置、选中文本和获取/清除焦点(转)
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo异常(转)
    STL优先队列 hdu1896
    工作排序问题 poj2376
    STL存储邻接表
    二叉树的遍历
    快速排序
    并查集 并查集来判断是否存在环路
  • 原文地址:https://www.cnblogs.com/endust/p/12312685.html
Copyright © 2011-2022 走看看