다른 입력 인수를 사용하여 명령 줄 프로그램을 실행하고 출력에서 특정 줄을 가져 오는 스크립트를 작성했습니다. 나는 루프에서 실행되는 다음과 같은 한 :루프에서 subprocess.Popen (...) 호출의 출력을 인쇄하는 방법은 무엇입니까?
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의 출력을 표시하는 옵션이 필요합니다. 하지만 p2를 깨지 않고 p1.stdout.readlines()를 사용하여 가져올 수는 없습니다. 어떻게해야합니까?
grep을 호출하지 않고 p1의 출력을 저장하고 구문을 검색 할 수는 있지만 출력이 너무 많아서이 방법이 매우 비효율적으로 보입니다.
의견을 보내 주시면 대단히 감사하겠습니다. 감사!
작품. 감사! – Lin