ser = serial.Serial(sys.argv[1],9600)fd = fdpexpect.fdspawn(ser.fd)fd.send('%s\r' % username)i = fd.expect(['Password:',pexpect.TIMEOUT],timeout=30)if i == 0: fd.send('%s\r' % password)else: print 'Boom!'
似乎不是捕获它们,而是几乎立即引发pexpect.exceptions.EOF.如果我将pexpect.EOF添加到匹配列表中,EOF将立即匹配.当然,它是一个串口,数据很可能尚未到来.如果我在fd.expect()之前添加time.sleep(1),它将起作用.但这违背了期望的目的.难道我做错了什么?
解决方法 无论何时使用fdpexpect而不是使用生成终端的普通pexpect,您都必须担心命中该文件流的EOF.有关更多信息,请参阅此答案: https://stackoverflow.com/a/25770830.我还发现将maxread = 1添加到pexpect.fdpexpect.fdspawn可以帮助解决这个问题,但这也会减慢阅读文本的速度.
总结以上是内存溢出为你收集整理的Python pexpect:fdpexpect pyserial == timeout不起作用?全部内容,希望文章能够帮你解决Python pexpect:fdpexpect pyserial == timeout不起作用?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)