Разбор stdout в Python

В Python мне нужно получить версию внешнего двоичного кода, который мне нужно вызвать в моем script.

Скажем, что я хочу использовать Wget в Python, и я хочу знать его версию.

Я позвоню

os.system( "wget --version | grep Wget" ) 

а затем я проанализирую выводимую строку.

Как перенаправить stdout файла os.command в строку в Python?

Ответ 1

Один "старый" способ:

fin,fout=os.popen4("wget --version | grep Wget")
print fout.read()

Другим современным способом является использование модуля subprocess:

import subprocess
cmd = subprocess.Popen('wget --version', shell=True, stdout=subprocess.PIPE)
for line in cmd.stdout:
    if "Wget" in line:
        print line

Ответ 2

Используйте модуль subprocess:

from subprocess import Popen, PIPE
p1 = Popen(["wget", "--version"], stdout=PIPE)
p2 = Popen(["grep", "Wget"], stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]

Ответ 4

Используйте subprocess вместо этого.

Ответ 5

Если вы находитесь на * nix, я бы рекомендовал вам использовать модуль команд.

import commands

status, res = commands.getstatusoutput("wget --version | grep Wget")

print status # Should be zero in case of of success, otherwise would have an error code
print res # Contains stdout