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

Ass*_*Guy 27 python terminal

我可以使用终端命令,os.system()但我想捕获此命令的输出.我怎样才能做到这一点?

Jiř*_*car 46

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

>>> 
Run Code Online (Sandbox Code Playgroud)

使用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()
Run Code Online (Sandbox Code Playgroud)


Sve*_*ach 18

请改用subprocess模块.

pipe = Popen("pwd", shell=True, stdout=PIPE).stdout
output = pipe.read()
Run Code Online (Sandbox Code Playgroud)

在Python 2.7中,您还可以使用该check_output()功能.


ger*_*rry 9

您可以使用POPENsubprocess,他们建议.

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

import os
a  = os.popen('pwd').readlines()
Run Code Online (Sandbox Code Playgroud)

  • 不推荐使用`os.popen`来支持`subprocess.Popen`. (5认同)