Python 如何使用subprocess.call返回的数据而不返回整个输出?
此函数仅获取url并在其上运行nslookup。我想做的是获取nslookup的输出并通过它解析某些关键字。问题是,如果我传入一个应该可以工作的url(在nslookup中包含单词acamai),那么当前代码的问题在于 它返回0 注意,我添加了stdout=subprocess.PIPE,这样nslookup的整个输出就不会返回到终端 关于如何将nslookup的输出分配给变量以便我可以访问它的任何建议?Python 如何使用subprocess.call返回的数据而不返回整个输出?,python,subprocess,Python,Subprocess,此函数仅获取url并在其上运行nslookup。我想做的是获取nslookup的输出并通过它解析某些关键字。问题是,如果我传入一个应该可以工作的url(在nslookup中包含单词acamai),那么当前代码的问题在于 它返回0 注意,我添加了stdout=subprocess.PIPE,这样nslookup的整个输出就不会返回到终端 关于如何将nslookup的输出分配给变量以便我可以访问它的任何建议?子流程。call()返回退出代码,而不是标准输出。您可以直接使用Popen类: print
子流程。call()
返回退出代码,而不是标准输出。您可以直接使用Popen
类:
print is_acamaized(url)
最后的.communicate()[0]
很重要。它告诉Popen我们完成了,并返回一个元组:(stdout
,stderr
)。元组[0]
中的第一项是stdout
您也可以使用子流程。检查输出()
:
subprocess.call()
返回退出代码,而不是标准输出。您可以直接使用Popen
类:
print is_acamaized(url)
最后的.communicate()[0]
很重要。它告诉Popen我们完成了,并返回一个元组:(stdout
,stderr
)。元组[0]
中的第一项是stdout
您也可以使用子流程。检查输出()
:
你的程序应该在
if-nslookup\u data.find('akamaidedge'):
处引发错误,因为subprocess.call
返回int
,并且int
没有find
方法。如果nslookup\u data.find('akamaidedge'),你的程序应该在处引发错误:
因为subprocess.call
返回一个int
并且int
没有find
方法。有没有理由不在这里使用data=check\u output(“nslookup”,clean\u host”)
。@J.F.Sebastian:在这种情况下,它并没有真正的帮助,但是你可以给它文本,让它转到stdin,它以元组的形式返回stdout和stderr。有什么理由不在这里使用data=check\u output(“nslookup”,clean\u host”)
。@J.F.Sebastian:在这种情况下,它没有真正的帮助,但是您可以给它文本以转到stdin,它将stdout和stderr作为元组返回。
nslookup_data = subprocess.Popen(["nslookup", clean_host], stdout=subprocess.PIPE).communicate()[0]
nslookup_data = subprocess.check_output(["nslookup", clean_host])