Subprocess模块学习整理
1. subprocess模块的用途
subprocess模块用于主动创建新的进程,以执行用户预期的任务,例如在Windows的CMD执行执行一些指令,或在Linux下执行一些shell指令等。
该模块中的接口,可以替换一些旧版本的模块或函数:
os.system
os.spawn*
以下将通过对官方文档及subprocess模块源码做剖析式分析
2. class
subprocess模块共有5个类:
Popen(Object)
CompletedProcess(object)
SubprocessError(Exception)
–CalledProcessError(SubprocessError
)
–TimeoutExpired(SubprocessError
)
2.1 SubprocessError
subprocess模块的异常类基类,虚实现
2.2 CalledProcessError
继承自SubprocessError异常基类,当创建的进程执行返回值非0(执行出错)时,该异常将会抛出
2.3 TimeoutExpired
继承自SubprocessError异常基类,当创建的进程执行时间超出用户设置的超时时间时,该异常将会抛出
2.4 CompletedProcess
该类的实例时subprocess的run
方法的返回值,代表run方法创建的进程任务执行完毕。
该类只有一个实际作用的方法–check_returncode
class CompletedProcess(object):
"""A process that has finished running.
This is returned by run().
Attributes:
args: The list or str args passed to run().
returncode: The exit code of the process, negative for signals.
stdout: Th