subprocess.check_output函数的行为问题

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

我的代码是:

import subprocess

answer = subprocess.check_output("python ../pydig/pydig @1.1.1.1 +tls=noauth goowdqdqdqdgle.de A",  encoding='utf8')
print (answer)

Pydig是一个用于查找域名的库。我的问题是执行该程序时,它告诉我一个subprocess.CalledProcessError:

subprocess.CalledProcessError: Command 'python ../pydig/pydig @1.1.1.1 +tls=noauth goowdqdqdqdgle.de A' returned non-zero exit status 3.

但是当我通过命令提示符执行命令pydig @1.1.1.1 +tls=noauth goowdqdqdqdgle.de A时,会给我有效的输出。

怎么可能?

谢谢您的帮助。

问候

python subprocess output
1个回答
0
投票

问题是,如果命令失败,check_output将不会产生命令的输出。

如果返回码非零,则会引发CalledProcessError。 CalledProcessError对象将在returncode属性中具有返回码,在output属性中具有任何输出。

由于该网站不存在,该命令返回错误,并且您得到的只是python异常。如果仍要获取输出,请使用check_outputsubprocess.Popen(python 3.5+)进行输出/错误重定向。

也总是使用参数列表,而不是字符串。

带有subprocess.run的示例

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