Найти - Пользователи
Полная версия: получение результата вывода от консольной программы реалтайм
Начало » Python для новичков » получение результата вывода от консольной программы реалтайм
1
o7412369815963
я сейчас запускаю программы/комманды так:
  a = os.popen(command)
for line in a.readlines():
print line
результат возвращается только после завершения работы программы,
как сделать что-б результат получаться по ходу работы программы?
igor.kaist
subprocess? :)
Rodegast
os.popen2(command) и скорее всего придётся читать данные отдельным потоком.
o7412369815963
вот так вот получилось:

import os

con = os.popen("ping 127.0.0.1","r")
while 1:
line = con.readline()
print line.decode('CP866'),
if not line: break
.Serj.
вот так вот получилось:
Ещё проще:
import os
os.spawnl(os.P_NOWAIT, "/bin/ping", "", "127.0.0.1", "-c3")
По идее, на винде тоже должно сработать.
Или же ещё проще, через subprocess, как советовал igor.kaist:
import subprocess
subprocess.Popen(["/bin/ping", "127.0.0.1", "-c3"])
Мораль: надо слушать старших и внимательно читать документацию, а не городить собственные велосипеды :)
Кстати, полный путь до исполняемого файла в случае subprocess писать не обязательно.

P.S. всё проверял в ipython.
o7412369815963
.Serj.
Ещё проще:
P.S. всё проверял в ipython.
первый пример не рабочий на питоне26 (винда)

второй стартует но от него нет толку, как получить вывод программы?
Enchantner
o7412369815963
from subprocess import Popen, PIPE
pipe = Popen(["/bin/ping", "127.0.0.1", "-c3"], shell=True, stdout=PIPE).stdout
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB