python 打印subprocess.Popen中获取的内容
时间: 2023-12-09 19:55:42 浏览: 35
可以使用subprocess.Popen的stdout参数来捕获命令输出,使用communicate()方法获取命令输出的内容。在代码中可以这样实现:
```python
import subprocess
p = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE)
output, err = p.communicate()
print(output.decode())
```
相关问题
python subprocess.Popen 持续打印输出内容
可以使用subprocess.Popen的stdout参数来捕获子进程的输出,然后使用readline()方法逐行读取输出内容,直到输出结束。下面是一个示例代码:
```python
import subprocess
p = subprocess.Popen(['command', 'arg1', 'arg2'], stdout=subprocess.PIPE)
while True:
output = p.stdout.readline().decode('utf-8')
if output == '' and p.poll() is not None:
break
if output:
print(output.strip())
```
这里的`command`是你要执行的命令,`arg1`和`arg2`是命令的参数。`subprocess.PIPE`参数指定了子进程的标准输出被重定向到管道中,然后使用`readline()`方法逐行读取输出的内容,直到子进程结束。
注意,如果子进程的输出比较大,这种方法可能会导致程序阻塞。如果需要非阻塞式地读取子进程的输出,可以使用`select`模块来实现。
python subprocess.Popen用法
以下是使用python的subprocess.Popen的示例代码:
```python
import subprocess
# 执行命令并获取输出
result = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
output = result.communicate()[0]
print(output.decode('utf-8'))
# 执行命令并获取返回值
result = subprocess.Popen(['echo', 'Hello, World!'], stdout=subprocess.PIPE)
result.wait()
return_code = result.returncode
print(return_code)
```
这个例子展示了两种常见的用法。第一个示例执行了一个命令并获取了命令的输出,第二个示例执行了一个命令并获取了命令的返回值。