zoukankan      html  css  js  c++  java
  • subprocess模块详解2

    1.call() 和run功能类似,都是接受一个列表里的参数。

    >>> import subprocess
    >>> a = subprocess.call(["control"])
    

    2.返回值不为0,程序会报错

    >>> subprocess.check_call(["control"])
    

    3.接受一个字符串命令,返回一个元组,第一个是执行状态,第二个是命令结果。

    >>> subprocess.getstatusoutput("control")
    (1, '')
    

    4.接受字符串命令,并返回结果  

    >>> subprocess.getoutput()
    

    5.返回结果给res,执行状态不为0会报错。注意:不是打印结果,是返回命令结果给res。

    >>>res = subprocess.check_output("control")
    

    6.用run执行“sleep 10” 系统会停止10s去执行程序。因为系统调用run方法,run方法会停留在主程序,直到执行完成,主程序才会继续下去。

    >>> subprocess.run("sleep 10",shell = True,stderr = subprocess.PIPE,stdout = subprocess.PIPE)a.
    

    a.poll() 查看执行状态,执行结束了会返回执行状态。Popen执行命令不会影响主程序,系统调用Popen,Popen会发起一个新进程,新进程会执行命令,主程序还会继续运行下去,新进程执行完毕会把结果返回给主程序。同时,用a.poll()还可以随时查看新进程的执行状态。Popen是run封装的一个模块。

    >>> a = subprocess.Popen("sleep 10",shell = True,stderr = subprocess.PIPE,stdout = subprocess.PIPE)
    

      

    7.preexec_fn ,只在Unix平台下有效,用于指定一个可执行对象,他将在新进程执行之前执行。

     >>> a = subprocess.Popen("sleep 10",shell = True,stderr = subprocess.PIPE,stdout = subprocess.PIPE,preexec_fn = say)
    

     cwd  用于设置子进程的当前目录

    >>> a = subprocess.Popen("sleep 10",shell = True,cwd =r" C:UsersLENOVODesktop12",stderr = subprocess.PIPE,stdout = subprocess.PIPE,preexec_fn = sayhi)
    

     env 设置子进程的环境变量

    8.a.wait()  主程序需要结果,不往下继续运行,就用wait()

    9.terminate()终止所启动的进程  

    a.pid 获取进程号

    10.kill() 杀死所启动的进程

    11.communicate() 与启动的进程交互,只能交互一次,多了个stdin(标准输入)

    >>> a = subprocess.Popen(" file.py",shell = True,stderr = subprocess.PIPE,stdout = subprocess.PIPE,stdin = subprocess.PIPE)
    

    12.a.send_signal(signal.xxx) 给系统发信号

     

      

      

     

      

  • 相关阅读:
    Log4Net_LayOut
    各种数据库的批量插入操作_Oracle
    关于各种数据库 Insert时同时取到Id的操作
    一个小型的DBHelper的诞生(1)
    设计模式:重读(抽象工厂模型)
    设计模式:重读(单例)
    设计模式:重读(导读)
    17 1
    5
    oj 2.2
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8882413.html
Copyright © 2011-2022 走看看