pexpect模块的sendline方法难度

时间:2011-08-20 16:43:43

标签: python pexpect

如果我在面试问题中遇到一些字符串,我需要通过提供预定义的答案来自动化面试过程。

我正在使用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”参数相关的内容?

我尝试使用诸如timeout = 0,timeout = -1等选项。但是没有任何工作。

1 个答案:

答案 0 :(得分:0)

哇得到答案: child.setecho(错误)

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

我认为问题在于每当我们发送一行时,如果我们发送的行匹配我们epxect的模式(就像我们通常使用的PROMPT那样),那么在结果出来之前 pexpect回归。

不得不说我们必须谨慎选择预期模式。 一般对我来说,我按照示例中的推荐方式,设置PS1 = [PEXPECT] \ $然后setecho off然后发送命令改变PS1 这个程序适合我。