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.
Use keypress getch class of tty (linux) and msvcrt (windows) and use sys.stdout.flush() function to flush the buffer
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With