subprocess模块执行外部命令

在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模块执行外部命令)