subprocess,如何输出
时间: 2024-10-12 22:09:42 浏览: 16
python subprocess pipe 实时输出日志的操作
5星 · 资源好评率100%
`subprocess`模块是Python标准库中用于处理外部进程的一个模块,它允许你在脚本中方便地创建、运行、管理和控制子进程。如果你想要从子进程中获取输出,可以使用以下几个方法:
1. **`check_output()`**:这是一个阻塞方法,它会执行指定的命令并返回其标准输出,如果命令执行成功则返回字符串,如果失败则抛出异常。
```python
import subprocess
output = subprocess.check_output(['ls', '-l'])
print(output.decode('utf-8')) # 输出目录列表
```
2. **`Popen()`**:这是非阻塞的方法,它返回一个`Popen`对象,你可以通过`.communicate()`或`.stdout.read()`来获取输出。
```python
from subprocess import Popen, PIPE
process = Popen(['ls', '-l'], stdout=PIPE)
output, _ = process.communicate()
print(output.decode('utf-8'))
```
3. **`run()`**:在Python 3.5及以上版本,可以直接使用`subprocess.run()`方法,它会捕获异常并提供更多的选项。
```python
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout) # 输出目录列表
```
注意在处理输出时,要先检查结果是否为空,因为某些操作可能会导致空输出。
阅读全文