使用Python获取shell输出?

使用Python获取shell输出?,python,linux,shell,Python,Linux,Shell,我有一个shell脚本,用于获取域的whois信息,并根据域向shell输出take或available 我希望执行脚本,并能够在Python脚本中读取该值 我一直在玩弄子流程。调用,但不知道如何获得输出 e、 g subprocess.call('myscript www.google.com', shell=True) 将输出到shell import subprocess as sp p = sp.Popen(["/usr/bin/svn", "update"], stdin=sp.PI

我有一个shell脚本,用于获取域的whois信息,并根据域向shell输出
take
available

我希望执行脚本,并能够在Python脚本中读取该值

我一直在玩弄
子流程。调用
,但不知道如何获得输出

e、 g

subprocess.call('myscript www.google.com', shell=True)
输出到shell

import subprocess as sp
p = sp.Popen(["/usr/bin/svn", "update"], stdin=sp.PIPE, stdout=sp.PIPE, close_fds=True)
(stdout, stdin) = (p.stdout, p.stdin)
data = stdout.readline()
while data:
    # Do stuff with data, linewise.

    data = stdout.readline()
stdout.close()
stdin.close()
是我使用的习惯用法,显然在本例中我是在更新svn存储库。

子流程。call()
不提供输出,只提供返回代码。对于输出,应使用
子流程。请改为选中\u output()
。这些是围绕popen函数系列的友好包装,您也可以直接使用它们


有关更多详细信息,请参阅:

尝试
子流程。手动使用stdin和stdout与Popen检查输出是一种常见的模式,它已被抽象为子流程模块中非常有用的方法:

例如:

p = subprocess.Popen(['myscript', 'www.google.com'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
(stdoutdata, stderrdata) = p.communicate(input="myinputstring")
# all done!

您使用的是哪个版本的Python?一些答案建议使用
子流程。检查输出,这是2.7中新增的。