subprocess.run与subprocess.pepon
时间: 2024-11-16 16:14:11 浏览: 28
对Python subprocess.Popen子进程管道阻塞详解
`subprocess`模块在Python中用于执行外部命令,`run()`和`Popen()`都是其中的重要函数。
`subprocess.run()`[^1] 是一个便捷的方法,它简化了创建子进程并获取其输出的过程。它会直接执行指定的命令,返回一个`CompletedProcess`对象,包含了退出状态、标准输出和错误输出:
```python
import subprocess
# 使用run()
cmd_result = subprocess.run(['ls', '-l'])
print(cmd_result.stdout.decode()) # 打印目录内容
```
相比之下,`Popen()` 提供了更多的控制选项,比如更灵活的命令参数传递(通过`args`参数),以及能够独立管理子进程的生命周期(如`communicate()`方法用于接收输出)。这里是一个使用`Popen()`的例子:
```python
# 使用Popen()
proc = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
output, error = proc.communicate()
print(output.decode()) # 同样打印目录内容
```
阅读全文