我正在尝试获取traceroute失败时返回的错误消息。例如:
from subprocess import CalledProcessError, check_output
try:
output = check_output(["traceroute", "error"])
except CalledProcessError as error:
output = error.output
print "error: {}".format(output)
输出:
error:
我尝试过使用output = str(error.output)
,但输出仍为空。执行上述代码时会向终端打印一条错误消息,因此应该可以将其分配给变量,对吗?
答案 0 :(得分:5)
如:https://docs.python.org/2/library/subprocess.html#subprocess.check_output
中所述要在结果中捕获标准错误,请使用 的标准错误= subprocess.STDOUT 强>
<强>尝试:强>
import subprocess
from subprocess import CalledProcessError, check_output
try:
output = check_output(["traceroute", "error"], stderr=subprocess.STDOUT)
except CalledProcessError as error:
output = error
print "error: {}".format(output.output)
<强>输出:强>
error: traceroute: unknown host error