Я написал скрипт для запуска программы командной строки с различными входными аргументами и получения определенной строки из выходных данных. У меня в цикле работает следующее:
p1 = subprocess.Popen(["program", args], stderr=subprocess.STDOUT, stdout=subprocess.PIPE, shell=False)
p2 = subprocess.Popen(["grep", phrase], stdin=p1.stdout, stdout=subprocess.PIPE, shell=False)
p1.wait()
p2.wait()
p = str(p2.stdout.readlines())
print 'p is ', p
Одна из проблем заключается в том, что вывод завершается только после завершения цикла. Я хочу напечатать что-нибудь каждый раз, когда процесс закончен. Как я могу это сделать?
Кроме того, я хочу иметь возможность отображать вывод p1. Но я не могу взять его с помощью p1.stdout.readlines (), не нарушив p2. Как я могу это сделать?
Я думал, что просто не могу сделать вызов grep, сохранить выходные данные p1 и найти фразу, но есть много выходных данных, поэтому этот способ кажется довольно неэффективным.
Любые предложения будут с благодарностью. Спасибо!