0

我正在使用 Pexpect 进行测试。

w1 = pexpect.spawn('telnet XXXX')
# or 
w1 = pxssh.pxssh()
# both with 
w1.logfile_read =sys.stdout

它运行良好;但是,如果我在某个时候这样做:

w1.interact()

然后尝试在屏幕上写一些东西我得到双字符。例如,如果我输入:rmdir它将是rrmmddiirr.

我怎么能有一个字符?

4

1 回答 1

1

interact()会照顾你的回声,所以你需要这样做:

w1.logfile_read = None
w1.interact()

根据 pexpect文档

  • interact(escape_character='\x1d', input_filter=None, output_filter=None)

    这将子进程的控制权交给了交互式用户(键盘上的人)。击键被发送到子进程,并打印子进程的 stdout 和 stderr 输出。这只是将子标准输出和子标准错误回显到真正的标准输出,并将真正的标准输入回显到子标准输入。[...]

    如果指定了日志文件,则以交互模式从子进程发送和接收的数据将复制到给定日志中。

于 2021-04-12T03:40:46.100 回答