如何在执行raw_input()之前清除输入缓冲区的数据

来源:互联网 发布:湛江管家婆软件 编辑:程序博客网 时间:2024/05/21 23:33

在编写python代码时,我们有时会发现在程序来到raw_input()之前的时候键盘可能会输入一些数据保存在缓冲区,与我们真正想输入raw_input()的数据混在一起。就像下面代码所示的情况一样:

import timea = raw_input('first input')time.sleep(10)#这个时候混入了一些键盘输入b = raw_input('second input')

为了解决这类问题,这里介绍一个函数。函数功能描述如下:

termios.tcflush(fd, queue):
丢弃文件描述符fd中的数据队列。变量queue表示具体待处理的队列,如TCIFLUSH表示输入队列,TCOFLUSH表示输出队列,TCIOFLUSH同时表示输入输出队列。

使用范例如下:

from termios import tcflush, TCIFLUSHimport timeimport sysa = raw_input("first input ")time.sleep(10)tcflush(sys.stdin, TCIFLUSH)b = raw_input("second input ")print a, '\t', b~$ python test.py first input 19999second input 21   2

当然,使用TCOFLUSHTCIOFLUSH同理。

0 0