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

问题描述 投票:0回答:1

出于某种原因,我想收集某些命令的帮助消息。为了做到这一点,我在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命令的帮助消息。如果是这样,该怎么做?

python-3.x subprocess
1个回答
1
投票

您可以查看subprocess.run返回的内容:

>>> 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中寻找它。

© www.soinside.com 2019 - 2024. All rights reserved.