我正在使用 Pexpect 进行测试。
w1 = pexpect.spawn('telnet XXXX')
# or
w1 = pxssh.pxssh()
# both with
w1.logfile_read =sys.stdout
它运行良好;但是,如果我在某个时候这样做:
w1.interact()
然后尝试在屏幕上写一些东西我得到双字符。例如,如果我输入:rmdir它将是rrmmddiirr.
我怎么能有一个字符?
interact()会照顾你的回声,所以你需要这样做:
w1.logfile_read = None
w1.interact()
根据 pexpect文档:
interact(escape_character='\x1d', input_filter=None, output_filter=None)这将子进程的控制权交给了交互式用户(键盘上的人)。击键被发送到子进程,并打印子进程的 stdout 和 stderr 输出。这只是将子标准输出和子标准错误回显到真正的标准输出,并将真正的标准输入回显到子标准输入。[...]
如果指定了日志文件,则以交互模式从子进程发送和接收的数据将复制到给定日志中。