美文网首页
subprocess模块执行外部命令

subprocess模块执行外部命令

作者: 长歌行夜一 | 来源:发表于2020-03-09 00:00 被阅读0次

    在python中有多种方式可以执行命令并捕获输出。目前广泛使用的是subprocess模块。它提供了一个Popen的类来启动和设置子进程的参数。它还提供了一些便利函数,如call ,check_call, check_output等,这些便利函数是对Popen类的封装。

    1.call

    subprocess.call(args, *, stdin=None,stdout=None,stderr=None,shell=False)

    其中当shell为False时,args接收的是一条命令的字符串列表。返回值是命令执行后的状态码。

    subprocess.call(['ls', '-la'])

    当shell为True, args可以接受一条命令的字符串。

    subprocess.call(['ls', '-la'], shell=True)

    2.check_call

    与call相似,只不过多了一个验证状态码的功能。当命令执行失败时,返回的是非零的状态码,将抛出异常。

    3. check_output

    可以获取命令的回显。

    subprocess.check_output(['df', '-h']), 若命令执行失败,会抛出异常。

    4.Popen类

    Popen类相比于上面的便利函数来讲更加灵活,能处理更复杂的情况。

    Popen对象创建后,子进程便会运行。Popen类提供了一些方法来控制子进程的运行。

    -------wait:  等待子进程结束

    -------poll:检查子进程状态;

    -------kill: 给子进程发送SIGKILL信号终止子进程;

    -------send_signal: 向子进程发送信号;

    -------terminate: 给子进程发送SIGTERM信号终止子进程。

    -------communicate: 与子进程交互。

    相关文章

      网友评论

          本文标题:subprocess模块执行外部命令

          本文链接:https://www.haomeiwen.com/subject/qpgddhtx.html