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

How can I get terminal output in python?

本问题已经有最佳答案,请猛点这里访问。

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


1
2
3
4
5
6
7
>>> import subprocess
>>> cmd = [ 'echo', 'arg1', 'arg2' ]
>>> output = subprocess.Popen( cmd, stdout=subprocess.PIPE ).communicate()[0]
>>> print output
arg1 arg2

>>>

使用subprocess.pipe时出现错误。对于巨大的产出,使用以下方法:

1
2
3
4
5
6
7
8
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()


使用subprocess模块代替。

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

在Python2.7中,还可以使用check_output()函数。


你可以按照他们的建议在subprocess中使用popen。

对于不重新开始的os,如下所示:

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


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

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