如何通过子进程获取命令的标准输出?

时间:2019-12-17 16:56:09

标签: python-3.x subprocess

由于某种原因,我想收集一些命令的帮助消息。为了做到这一点,我在 Python3 中使用了 subprocess 模块。我的代码对linux命令工作正常,但在BASH命令上使用时却不行。通常,我希望它在 cd BASH命令上工作。

这是我现在使用的代码片段:

import subprocess

instruction = ["cat", "--help"]
proc = subprocess.run(instruction, stdout=subprocess.PIPE,stderr=subprocess.PIPE, universal_newlines=True)
return proc.stdout

如前所述,它可以正常工作,并返回命令 cat 的帮助消息。

这是当我尝试修改代码以处理BASH命令时返回的内容:

>>> import subprocess
>>> subprocess.run("cd --help", shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE).stdout
b''

我的问题很简单,是否可以使用 Python3 获得BASH命令的帮助消息。如果是这样,该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以查看>>> import subprocess >>> result = subprocess.run("cd --help", shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE) >>> result CompletedProcess(args='cd --help', returncode=1, stdout=b'', stderr=b'/bin/sh: line 0: cd: --: invalid option\ncd: usage: cd [-L|-P] [dir]\n') 返回的内容:

cd --help

结果是,$ cd --help -bash: cd: --: invalid option cd: usage: cd [-L|-P] [dir] 是一个错误:

result.stderr

因此,您应该在Flowable.empty()中查找它。