如何在python中获得终端输出?[重复]

问题描述 投票:29回答:4

我可以用以下方法执行一个终端命令 os.system() 但我想捕捉这个命令的输出。怎样才能做到这一点?

python terminal
4个回答
46
投票
>>> import subprocess
>>> cmd = [ 'echo', 'arg1', 'arg2' ]
>>> output = subprocess.Popen( cmd, stdout=subprocess.PIPE ).communicate()[0]
>>> print output
arg1 arg2

>>> 

子进程.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()

18
投票

在Python中,从3.5版本开始推荐的方法是使用 subprocess.run():

from subprocess import run
output = run("pwd", capture_output=True).stdout

使用 subprocess 模块 代替。

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

10
投票

您可以使用 Popensubprocess 按照他们的建议。

os,这不是recomment,是像下面这样的。

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

0
投票

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

import commands
print commands.getstatusoutput('echo "test" | wc')
© www.soinside.com 2019 - 2024. All rights reserved.