每周一点python(基于3.6.6)之subprocess_01

subprocess模块可以用于创建子进程,连接到子进程的标准输入/输出/错误管道中去,并获得子进程执行的返回状态码

subprocess.run()

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, env=None)

调用subprocess模块推荐使用run()函数(在它能够处理的应用场景下)。对于更高级的应用场景,直接使用Popen接口。需要注意的是run()函数在Python3.5版本引入。

该函数运行args参数中的命令,命令执行完成后,返回一个CompletedProcess实例。

上面仅列出了一些常用的参数。实际上,run()函数的参数包括Popen构造器中所有的参数,以及timeout, input和check。这些参数都将传入Popen接口。

默认不捕获stdout或stderr。除非显式地指定stdout=subprocess.PIPE或stderr=subprocess.PIPE

timeout参数被传入到Popen.communicate()。如果超时,子进程会被杀死并等待(waited for)。子进程终止后,抛出TimeoutExpired异常。

input参数被传入到Popen.communicate()并作为subprocess的标准输入。该参数值必须是字节序列或字符串(作为字符串时,必须指定encoding或errors,或设置universal_newlines=True)。使用input参数后,stdin自动设置为subprocess.PIPE,即使设置了其他值也不会生效。

如果设置了check=True,且子进程以非0状态码退出,将会抛出CalledProcessError异常。该异常的属性保存了执行指令,退出状态码,标准输出和错误输出信息

如果指定了encoding或errors,或设置了universal_newlines=True,标准输入/输出/错误将作为文件对象,以文本模式打开。否则将以二进制模式打开。

env参数指定子进程的环境变量并传递到Popen接口。值不为None时,必须是映射对象显式地定义子进程的环境变量;值为None表示继承父进程的环境变量。

subprocess.CompletedProcess

run()函数的返回值,表示子进程执行完成。

  • args:启动子进程的参数。值是一个列表或字符串。
  • returncode:子进程的返回状态码。0表示进程正常执行,-N表示进程被信号N终止。
  • stdout:子进程的标准输出。值是None或字节序列或字符串(需要调用进程时指定了encoding或errors)。如果指定了stderr=subprocess.STDOUT,那么stdout和stderr的值都会绑定到stdout属性,且stderrr的值变为None
  • stderr:子进程的错误输出。值是None或字节序列或字符串(需要调用进程时指定了encoding或errors)。
  • check_returncode():如果返回状态码非0,则抛出CalledProcessError异常

subprocess.DEVNULL

一个可以设置给stdin/stdout/stderr参数的特殊值。类似shell中的/dev/null

subprocess.PIPE

一个可以设置给stdin/stdout/stderr参数的特殊值。类似shell中的管道符|。常用于Popen.communicate()

subprocess.STDOUT

一个可以设置给stderr参数的特殊值。类似shell中的错误输出重定向到标准输出2>&1

subprocess.SubprocessError

subprocess模块中异常的基类

subprocess.TimeoutExpired

SubprocessError异常的子类,子进程执行超时时抛出

  • cmd:派生出子进程的指令
  • timeout:超时值
  • output:run()check_output()捕获到的子进程标准输出
  • stdout:output属性的别名
  • stderr:run()捕获到的子进程错误输出

subprocess.CalledProcessError

SubprocessError异常的子类,通过check_call()check_output()派生的子进程返回非0状态码时抛出

  • returncode:子进程的返回状态码。如果进程由于某个signal退出,则该属性为该signal值的负数
  • cmd:派生出子进程的指令
  • output:run()check_output()捕获到的子进程标准输出
  • stdout:output属性的别名
  • stderr:run()捕获到的子进程错误输出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值