当文本在会话中换行时,pexpect 出现问题

问题描述

我正在编写一个 pexpect 脚本,该脚本正在运行填充输出文件名,然后提示输入文件的参数。

脚本运行的程序要求设备:然后参数:总是在同一行....所以如果为设备输入的文件路径名很长,有时参数提示会换行到下一行。

我的代码看起来像.. child.expect_exact('设备:') child.sendline('/umcfiles/ftp_dir/ftp_peoplesoft/discount/AES_disCOUNT_15010.TXT') child.expect_exact('参数:')

这超时了..这是 child.before 中的内容 ' /umcfiles/ftp_dir/ftp_peoplesoft/discount/AES_disCOUNT_15010.TXT 参数\r\neters: "RWSN" => '

所以期望失败......(一个 child.expect('Parameters:') 也失败了)

如果 \r\n 存在,我如何忽略它,因为根据我使用的路径/文件名的长度,它可能根本不存在,或者位于不同的位置。

谢谢!

解决方法

实际上...我找到了一种计算给定行上剩余多少的方法,并动态地将我的期望设置为参数提示的可见程度...似乎正在工作

#look for end of line and fix how much of 'Parameters:' we look for in pexpect
dlen = 80-len('Device: /umcfiles/ftp_dir/ftp_peoplesoft/discount/AES_DISCOUNT_15010.TXT')
pstr='Parameters:'
if dlen > len(pstr):
   dlen=len(pstr)
else:
   dlen=dlen-3 #remove the /r/n
child.expect(pstr[0:dlen])