I have looked at a few thread about this, but it doesn't seem to solve my problem.
I am running linux and when I use raw_input(), with a pause between each, it will take the data that I have pressed before, here is an example :
import time
a = raw_input("first input")
b = raw_input("second input")
time.sleep(5)
#flush junk?
a = raw_input("third input")
b = raw_input("fourth input")
if I press any keys followed by the enter during the 5 seconds, the two other raw input will take the input. I would like to be able to flush the data and let the user be prompted.
thank you.
解决方案
For unix you can use termios.tcflush
from termios import tcflush, TCIFLUSH
import time,sys
a = raw_input("first input ")
b = raw_input("second input ")
time.sleep(5)
tcflush(sys.stdin, TCIFLUSH)
a = raw_input("third input ")
b = raw_input("fourth input ")
~$ python foo.py
first input 1
second input 2
33
33
third input 3
fourth input 4
termios.tcflush(fd, queue)
Discard queued data on file descriptor fd. The queue selector specifies which queue: TCIFLUSH for the input queue, TCOFLUSH for the output queue, or TCIOFLUSH for both queues.