История изменений
Исправление AKonia, (текущая версия) :
запускай из питона с помощью popen, и читай его вывод, например
from subprocess import Popen, PIPE
pipe = Popen(["ping", "yandex.ru"], stdout=PIPE)
pipe.stdout.read1(200) # pipe1 читает сколько доступно, но не более N, для синхронного-буферизованного чтения нужно использовать read(), который либо будет ждать завершения или переполнения буфера канала, либо если указать N, то будет ждать пока не станет доступно N байт
Обычные каналы оболочки работают в синхронном режиме(следующая команда ждёт завершения предыдущей), поэтому для того, чтобы читать вывод работающей программы нужно притворяться её потоком вывода и работать по сути в асинхронном режиме.
Исправление AKonia, :
запускай из питона с помощью popen, и читай его вывод, например
from subprocess import Popen, PIPE
pipe = Popen(["ping", "yandex.ru"], stdout=PIPE)
pipe.stdout.read1(200) # pipe1 читает сколько доступно, но не более N, для синхронного чтения read(), который либо будет ждать завершения или переполнения буфера канала, либо если указать N, то будет ждать пока не станет доступно N байт
Обычные каналы оболочки работают в синхронном режиме(следующая команда ждёт завершения предыдущей), поэтому для того, чтобы читать вывод работающей программы нужно притворяться её потоком вывода и работать по сути в асинхронном режиме.
Исправление AKonia, :
запускай из питона с помощью popen, и читай его вывод, например
from subprocess import Popen, PIPE
pipe = Popen(["ping", "yandex.ru"], stdout=PIPE)
pipe.stdout.read1(200)
Обычные каналы оболочки работают в синхронном режиме(следующая команда ждёт завершения предыдущей), поэтому для того, чтобы читать вывод работающей программы нужно притворяться её потоком вывода и работать по сути в асинхронном режиме.
Исправление AKonia, :
запускай из питона с помощью popen, и читай его вывод, например
from subprocess import Popen, PIPE
pipe = Popen(["ping", "yandex.ru"], stdout=PIPE)
pipe.stdout.read(200)
Обычные каналы оболочки работают в синхронном режиме(следующая команда ждёт завершения предыдущей), поэтому для того, чтобы читать вывод работающей программы нужно притворяться её потоком вывода и работать по сути в асинхронном режиме.
Исправление AKonia, :
запускай из питона с помощью popen, и читай его вывод, например
from subprocess import Popen, PIPE
pipe = Popen(["ping", "yandex.ru"], stdout=PIPE)
pipe.stdout.read(200)
Тут стоит понимать, что обычные каналы работают в синхронном режиме, т.е. нужно считать весь вывод, поэтому для того, чтобы читать вывод работающей программы нужно притворяться её потоком вывода и работать по сути в асинхронном режиме.
Исправление AKonia, :
запускай из питона с помощью popen, и читай его вывод.
from subprocess import Popen, PIPE
pipe = Popen(["ping", "yandex.ru"], stdout=PIPE)
pipe.stdout.read(200)
Исходная версия AKonia, :