Я могу выполнить команду терминала с помощью os.system()
, но я хочу захватить вывод этой команды. Как я могу это сделать?
Как я могу получить вывод терминала в python?
Ответ 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')