내 질문에 간단합니다 : expect()
pexpect를 사용하여 stderr에서 특정 출력을 볼 수 있습니까? pexpect.spawn()
은 stdout에서 출력을 기대하기 위해서만 사용될 수 있습니다.pexpect에서 stderr을 추출하는 중
유토피아 예 :
import pexpect child = pexpect.spawn(...) child.expect("hi", fd=pexpect.STDERR)
또는 산문
, "stderr에 문자열을 '안녕하세요'기대".나는이 문서에서 이러한 시설에 대한 언급을 발견하지 않은,하지만 난 child
인스턴스가 stderr
속성이 있습니다 않아 ... 내가 원하는 반 달성
해킹은 표준 오류 리디렉션하는 것입니다 스폰 인수에서 stdout하려면 정규 expect()
을 사용할 수 있습니다. 더 좋은 방법이있을거야?
건배
후손을 위해
Pexpect가 PTY에서 하위 프로세스를 실행하여 모든 표준 스트림, stdout과 stderr)는 해당 pty를 가리키고, 제어 프로세스는 해당 단일 pty에 쓰고 읽습니다. 그것은 stdout과 stderr에 따로 따로 접근 할 수 없다 : 그들은 표준 터미널에서 프로세스를 실행하는 것처럼 출력으로 인터리브 될 것이다. 별도의 액세스가 필요한 경우'subprocess.Popen'을 사용하여 프로세스를 시작한 다음'pexpect.fdpexpect.fdspawn'을 사용하여 파이프 중 하나만 볼 수 있습니다. –
감사합니다. 그게 효과가있는 것처럼 들리네. 예를 들어 답을 표시 할 것입니다 :) –