Разбор 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]
Ответ 3
используйте subprocess
.
Ответ 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