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

如上所示,它第一次匹配新行,因此出现注释“无效输入:”。所以它两次问同一个问题,然后它接受“测试”作为答案。

我该怎么做才能让我的答案第一次被接受?

有什么与 child.expect 中的参数“超时”相关的吗?

我曾尝试使用诸如 timeout=0、timeout=-1 等选项。但没有任何效果。

4

1 回答 1

0

哇得到答案: child.setecho(False)

在这个问题上工作了几个小时。幸运的是,这有效。

我认为问题在于,每当我们发送一行时,如果我们发送的行与我们预期的模式匹配(就像我们通常使用的提示一样。)然后在结果出来之前 pexpect 返回。

不得不说我们必须仔细选择期望模式。通常对我来说,我遵循示例中推荐的方式,设置 PS1=[PEXPECT]\$ 然后 setecho off 然后发送命令来更改 PS1 这个过程对我有用。

于 2012-04-27T06:16:35.967 回答