我有一个shell脚本,获取域的whois信息,并取决于域的输出或available
的shell。
我想执行脚本,并能够在我的Python脚本中读取这个值。
我一直在玩subprocess.call
但无法弄清楚如何获得输出。
例如,
subprocess.call('myscript www.google.com', shell=True)
将输出taken
shell。
subprocess.call()
不会给你输出,只有返回码。 对于输出你应该使用subprocess.check_output()
来代替。 这些都是popen函数族的友好包装,你也可以直接使用。
有关更多详细信息,请参阅: http : //docs.python.org/library/subprocess.html
与Popen手工使用stdin和stdout是一种常见的模式,它被抽象为子流程模块中非常有用的方法: 通信
例:
p = subprocess.Popen(['myscript', 'www.google.com'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) (stdoutdata, stderrdata) = p.communicate(input="myinputstring") # all done!
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存储库。
尝试subprocess.check_output
。