Python 清算';排队';命令行中的字符
我正在编写一个Python脚本,在其中的某一点上,要求用户输入一个组合键(同时按下这些键),并用enter确认。使用Python 清算';排队';命令行中的字符,python,terminal,Python,Terminal,我正在编写一个Python脚本,在其中的某一点上,要求用户输入一个组合键(同时按下这些键),并用enter确认。使用键盘模块抓取组合键和回车键,因此无论命令行是否处于焦点,它都能工作。之后,将显示一个input()提示符,提示他们需要输入一些文本 问题是此输入提示被“跳过”。我认为这是因为存储了一些字符和enter,它们一出现就被输入到输入中 我怎样才能解决这个问题?在输入之前有一个os.system('cls'),但这没有帮助。我还尝试在主提示之前添加一个一次性的input(),这种方法很有效
键盘
模块抓取组合键和回车键,因此无论命令行是否处于焦点,它都能工作。之后,将显示一个input()
提示符,提示他们需要输入一些文本
问题是此输入提示被“跳过”。我认为这是因为存储了一些字符和enter,它们一出现就被输入到输入中
我怎样才能解决这个问题?在输入之前有一个os.system('cls')
,但这没有帮助。我还尝试在主提示之前添加一个一次性的input()
,这种方法很有效,但我正在寻找一种更通用的解决方案,如果字符后面没有回车符,这种解决方案同样有效。找到了它,看起来我没有使用正确的搜索词。
此函数用于清除Windows和UNIX上的输入缓冲区:
def flush_input():
try:
import msvcrt
while msvcrt.kbhit():
msvcrt.getch()
except ImportError:
import sys, termios #for linux/unix
termios.tcflush(sys.stdin, termios.TCIOFLUSH)
由于我已经在导入文件顶部的模块,并且我现在只需要Windows支持,因此我使用以下内容:
def flush_input():
while msvcrt.kbhit():
msvcrt.getch()
“如果你能提供示例代码,可以吗?”Iceear补充道。