python subprocess 多行结果处理
时间: 2024-12-21 11:29:15 浏览: 9
`subprocess`模块在Python中用于执行外部命令并获取其输出。如果你需要从多行输出中处理结果,可以使用`check_output()`、`getoutput()`或`Popen`函数配合`communicate()`方法。下面是一些基本示例:
1. **使用`subprocess.check_output()`**:
这个函数会阻塞直到命令执行完毕,并返回整个输出作为字节串。如果需要处理文本结果,可以先转换成字符串:
```python
import subprocess
result = subprocess.check_output(["your_command"])
output_str = result.decode("utf-8") # 转换成字符串
lines = output_str.split("\n") # 分割成多行
```
2. **使用`Popen`和`communicate()`**:
如果你想逐行接收输出,可以创建`Popen`实例然后调用`communicate()`方法:
```python
import subprocess
process = subprocess.Popen(["your_command"], stdout=subprocess.PIPE)
output, _ = process.communicate()
output_str = output.decode("utf-8")
for line in output_str.split("\n"):
# 处理每行
```
3. **处理管道 (`|`) 和错误流 (`stderr`)**:
如果需要同时处理标准输出和错误输出,可以使用`Popen`的`stdin`, `stdout`, 和 `stderr` 参数:
```python
process = subprocess.Popen(["your_command", "arg1", "arg2"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
...
# 处理stdout和stderr分别
for line in stdout.decode().split("\n"):
...
for line in stderr.decode().split("\n"):
...
```
阅读全文