subprocess.popen等待运行结束
时间: 2023-12-07 17:00:33 浏览: 304
等待一个已经运行的程序结束
如果你想等待 `subprocess.Popen()` 运行结束后再继续执行代码,可以使用 `wait()` 或 `communicate()` 方法。
- `wait()` 方法:等待子进程结束并返回状态码。该方法会阻塞当前进程,直到子进程结束。
- `communicate()` 方法:与子进程交互,并等待子进程结束。该方法会返回一个元组,包含子进程的标准输出和标准错误输出。
示例代码:
```python
import subprocess
p = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = p.communicate() # 等待子进程结束,并获取标准输出和标准错误输出
status = p.wait() # 等待子进程结束,并获取状态码
print(output.decode('utf-8')) # 打印标准输出
print(error.decode('utf-8')) # 打印标准错误输出
print(status) # 打印状态码
```
在上面的示例中,`Popen()` 方法启动了一个 `ls -l` 的子进程,并将标准输出和标准错误输出分别保存在 `output` 和 `error` 变量中。`communicate()` 方法会等待子进程结束,并返回这两个变量。`wait()` 方法也会等待子进程结束,但它返回的是子进程的状态码。
阅读全文