python取消input_Linux:python:在raw_input()之前清除输入缓冲区

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值