2010-06-14 30 views
2
$whois abc.com 

我想用python命令这个命令,然后把结果作为一个文本字符串。我怎样才能做到这一点?如何使用python命令并返回结果?

+1

Duplicate:http://stackoverflow.com/questions/89228/how-to-call-external-command-in-python – 2010-06-14 21:37:28

+1

不是真的重复,因为你提到的问题是一个通用的问题,而这一个是非常具体的并且有更好的方法来执行whois而不是调用外部命令。 – bortzmeyer 2010-06-16 06:48:11

回答

4

您可以使用subprocess,例如:

from subprocess import Popen, PIPE 
output = Popen(["/usr/bin/whois", "abc.com"], stdout = PIPE).communicate()[0] 

stdout = PIPE参数强制标准输出被写入到一个临时管道,而不是控制台(如果你不希望出现这种情况,删除stdout参数)。

+0

当我说“打印输出”时,它返回None? – TIMEX 2010-06-14 21:09:13

+0

这不应该发生。当你在shell中执行命令时,whois打印什么? – AndiDog 2010-06-14 21:10:56

+0

哦,就文档而言,实际上需要'stdout = PIPE'参数来获得除'None'以外的结果。 – AndiDog 2010-06-14 21:14:13

1

subprocess很好。另一方面,whois协议是so simple,我不明白为什么要使用外部命令(并取决于它的可用性)。只需打开TCP连接到端口43,发送单行查询并阅读响应。

+0

其他大多数whois服务器或api都会为IP返回垃圾邮件,但是Linux whois是唯一一个以某种方式追逐ip直到它将真正的whois从最终节点中删除的人。 我不确定自己是否清楚自己,只是想解释作者的问题,因为我也面对它。 – Max 2011-05-18 22:41:07

相关问题