0

面接の質問に文字列が含まれると予想される場合は、事前定義された回答を提供して面接プロセスを自動化する必要があります。

私はpexpect.spawnを使用して、子プロセスを開始し、面接を行います。

私のコードの一部は:

child.expect("\> ")

child.sendline("test")

child.logfile=foutを使用して面接プロセスをファイルに保存しています

foutの一部は次のとおりです。

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

上で見たように、それは最初に新しい行と一致しているので、コメント「無効な入力:」です。つまり、同じ質問を2回行い、その答えとして「テスト」を受け入れます。

自分の答えを初めて受け入れるにはどうすればよいですか?

child.expectのパラメータ「timeout」に関連するものはありますか?

timeout = 0、timeout = -1などのオプションを使用してみましたが、何も機能していません。

4

1 に答える 1

0

答えはわかりました: child.setecho(False)

この問題に数時間取り組みました。幸いなことに、これは機能します。

問題は、行を送信するたびに、送信した行が epxect のパターン (通常使用する PROMPT など) と一致する場合、結果が出る前に pexpect が返されることにあると思います。

期待するパターンを慎重に選択する必要があると言わざるを得ません。一般的に、私は例で推奨されている方法に従いました。PS1=[PEXPECT]\$ を設定し、次に setecho をオフにしてから、コマンドを送信して PS1 を変更します。この手順は私にとってはうまくいきます。

于 2012-04-27T06:16:35.967 に答える