如何在python中获得终端输出?

时间:2010-12-10 11:31:31

标签: python terminal

我可以使用os.system()执行终端命令,但我想捕获此命令的输出。我怎么能这样做?

4 个答案:

答案 0 :(得分:42)

>>> import subprocess
>>> cmd = [ 'echo', 'arg1', 'arg2' ]
>>> output = subprocess.Popen( cmd, stdout=subprocess.PIPE ).communicate()[0]
>>> print output
arg1 arg2

>>> 

使用subprocess.PIPE时出现错误。对于巨大的输出使用这个:

import subprocess
import tempfile

with tempfile.TemporaryFile() as tempf:
    proc = subprocess.Popen(['echo', 'a', 'b'], stdout=tempf)
    proc.wait()
    tempf.seek(0)
    print tempf.read()

答案 1 :(得分:16)

改为使用subprocess module

pipe = Popen("pwd", shell=True, stdout=PIPE).stdout
output = pipe.read()

在Python 2.7中,您还可以使用check_output()函数。

答案 2 :(得分:8)

您可以根据他们的建议在subprocess中使用Popen

os,这不是推荐,如下所示:

import os
a  = os.popen('pwd').readlines()

答案 3 :(得分:0)

最简单的方法是使用库命令

import commands
print commands.getstatusoutput('echo "test" | wc')