Подтвердить что ты не робот

Как я могу получить вывод терминала в python?

Я могу выполнить команду терминала с помощью os.system(), но я хочу захватить вывод этой команды. Как я могу это сделать?

4b9b3361

Ответ 1

>>> 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()

Ответ 2

Вместо этого используйте subprocess module.

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

В Python 2.7 вы также можете использовать функцию check_output().

Ответ 3

Вы можете использовать Popen в subprocess как они предлагают.

с os, который не является рекомментацией, он выглядит следующим образом:

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

Ответ 4

Самый простой способ - использовать команды библиотеки

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