使用Python获取shell输出?
我有一个shell脚本,用于获取域的whois信息,并根据域向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
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中新增的。