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