Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用subprocess.call返回的数据而不返回整个输出?_Python_Subprocess - Fatal编程技术网

Python 如何使用subprocess.call返回的数据而不返回整个输出?

Python 如何使用subprocess.call返回的数据而不返回整个输出?,python,subprocess,Python,Subprocess,此函数仅获取url并在其上运行nslookup。我想做的是获取nslookup的输出并通过它解析某些关键字。问题是,如果我传入一个应该可以工作的url(在nslookup中包含单词acamai),那么当前代码的问题在于 它返回0 注意,我添加了stdout=subprocess.PIPE,这样nslookup的整个输出就不会返回到终端 关于如何将nslookup的输出分配给变量以便我可以访问它的任何建议?子流程。call()返回退出代码,而不是标准输出。您可以直接使用Popen类: print

此函数仅获取url并在其上运行nslookup。我想做的是获取nslookup的输出并通过它解析某些关键字。问题是,如果我传入一个应该可以工作的url(在nslookup中包含单词acamai),那么当前代码的问题在于

它返回0

注意,我添加了stdout=subprocess.PIPE,这样nslookup的整个输出就不会返回到终端

关于如何将nslookup的输出分配给变量以便我可以访问它的任何建议?

子流程。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])