您的位置:首页 > 其它

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

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

import time
a = 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, TCIFLUSH
import time
import sys

a = 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 1
99
99
second input 2
1   2


当然,使用TCOFLUSHTCIOFLUSH同理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: