Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 清算';排队';命令行中的字符_Python_Terminal - Fatal编程技术网

Python 清算';排队';命令行中的字符

Python 清算';排队';命令行中的字符,python,terminal,Python,Terminal,我正在编写一个Python脚本,在其中的某一点上,要求用户输入一个组合键(同时按下这些键),并用enter确认。使用键盘模块抓取组合键和回车键,因此无论命令行是否处于焦点,它都能工作。之后,将显示一个input()提示符,提示他们需要输入一些文本 问题是此输入提示被“跳过”。我认为这是因为存储了一些字符和enter,它们一出现就被输入到输入中 我怎样才能解决这个问题?在输入之前有一个os.system('cls'),但这没有帮助。我还尝试在主提示之前添加一个一次性的input(),这种方法很有效

我正在编写一个Python脚本,在其中的某一点上,要求用户输入一个组合键(同时按下这些键),并用enter确认。使用
键盘
模块抓取组合键和回车键,因此无论命令行是否处于焦点,它都能工作。之后,将显示一个
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补充道。