2011-08-20 2 views
0

인터뷰 질문에서 일부 문자열을 예상하면 사전 정의 된 응답을 제공하여 인터뷰 프로세스를 자동화해야합니다.pexpect 모듈의 sendline 메소드에 어려움이 있습니다.

나는 pexpect.spawn을 사용하여 하위 프로세스를 시작하고 인터뷰를 진행합니다.

내 코드의 일부는 다음과 같습니다

What would you like to use for the display name:^M 
> ^M 

Invalid input: ''^M 

^M 

What would you like to use for the display name:^M 
> test 


test^M 

:

child.expect("\> ") 

child.sendline("test") 

내가 FOUT의 일부가 child.logfile = FOUT

을 사용하여 파일에서 인터뷰 과정을 저장하고 위에서 볼 수 있듯이 처음으로 새 행과 일치하므로 주석이 "Invalid input :"입니다. 그래서 같은 질문을 두 번 묻고 답으로 "시험"을 받아들입니다.

답변을 처음 허용하려면 어떻게해야합니까?

child.expect에 "timeout"매개 변수와 관련된 것이 있습니까?

나는 timeout = 0, timeout = -1 등의 옵션을 사용해 보았지만 아무것도 작동하지 않습니다.

+0

예. 왜 당신은'>'을 탈출하고 있습니까? (나는 파이썬을 많이 모르기 때문에 합법적 일 수 있지만,''''는 pexpect 문서 샘플이 가지고있는 것보다 더 많이 서있는 것처럼 보일 것입니다.) – Mat

+0

이번에는 ">"문자를 벗어나지 않았습니다. 나는 child.expect (">")를 사용했다. 그러나 내 팔다리는 똑같은 것처럼 보입니다. – nsh

+0

나는 같은 문제가 있었다. – zinking

답변

0

와우 대답 얻을 : child.setecho (거짓)

가 몇 시간 동안이 문제에 대한 일을. 운 좋게 이 작동합니다.

필자가 보낸 줄이 우리가 보낸 줄이 우리가 일반적으로 사용하는 PROMPT와 같은 패턴과 일치하면 문제가 발생한다고 생각합니다. 결과가 나오기 전에 pexpect가 반환됩니다.

우리는 EXPECTING PATTERN을주의해서 선택해야한다고 말해야합니다. 일반적으로 나를 위해 권장 된 방법을 PS1 = [PEXPECT] \ $ 설정하고 setecho 해제 한 다음 PS1 변경하려면 명령을 보내십시오 이 절차는 나를 위해 작동합니다.

+0

나는이 대답의 대부분을 따르지 않지만,'child.setecho (False) '를 설정하면 나를 대신 할 수있다. – mrmagooey

관련 문제