Я прочитал и пробовал по 8 различным методам ответа на несколько вопросов об этом. Я открыл процесс на python и хочу прочитать его вывод, даже если процесс еще не завершился. Процесс не завершается обычно не менее 1 минуты или до отправки прерывания. Независимо от того, что я пытаюсь, я не могу заставить его прочитать результат. Я знаю команду и аргументы, что передал работу, потому что, когда я меняю ее на subprocess.call (cmd, args), она печатает все на экране. Я также проверил, что процесс работает с ps -ax. Вот пример того, что я пытаюсь (кот/Dev/случайное имеет никакого отношения к моему проекту):Невозможно прочитать стандартный вывод из работающего процесса
proc = subprocess.Popen(["cat", "/dev/random"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print("Process started.")
Вот что я пытался, что не удалось до сих пор:
for line in iter(p.stdout.readline, ''):
strLine = str(line).rstrip()
print(">>> " + strLine)
sys.stdout.flush()
И
output, error = proc.communicate()
print output
И
while proc.poll() is None:
print("Still waiting.")
print(proc.stdout.readline(1))
Есть больше решений, которые я пробовал, которые являются вариациями этого, но не повезло. Когда функция вызова используется без изменения stdout, все правильно печатается на консоли. Что я делаю не так?
Я использую Python 2.6.
Действительно ли ваш процесс отправляет свой вывод в 'stdout', а не' stderr'? Вы это проверили? –