python - subprocess'check_output - 返回shell消息

时间:2014-08-14 14:38:07

标签: python shell

这是我的代码:

from subprocess import check_output
print check_output('whoami', shell=True)

这很好用。

但是,如果我发出一个不存在的命令,它会说:

raise CalledProcessError(retcode, cmd, output=output)
CalledProcessError: Command 'test' returned non-zero exit status 1

如果你在shell上运行它,它会说:

'test' isnot recognized as an intenral or external command, operable program or batch file.

我怎样才能得到这个呢?

1 个答案:

答案 0 :(得分:2)

正如您可以在subprocess.check_output文档中看到的那样:

  

如果返回码非零,则会引发CalledProcessErrorCalledProcessError对象将在returncode属性中包含返回代码,并在输出属性中包含任何输出。

所以你可以这样做:

import subprocess

try:
    print subprocess.check_output('test', shell=True)
except subprocess.CalledProcessError, e:
    print e.output