我的代码是:
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
时,会给我有效的输出。
怎么可能?
谢谢您的帮助。
问候
问题是,如果命令失败,check_output
将不会产生命令的输出。
如果返回码非零,则会引发CalledProcessError。 CalledProcessError对象将在returncode属性中具有返回码,在output属性中具有任何输出。
由于该网站不存在,该命令返回错误,并且您得到的只是python异常。如果仍要获取输出,请使用check_output
或subprocess.Popen
(python 3.5+)进行输出/错误重定向。
也总是使用参数列表,而不是字符串。
带有subprocess.run
的示例
Popen