要求输入后raw_input打印提示

时间:2018-09-26 04:20:04

标签: python python-2.x raw-input

当我使用raw_input时,提示仅在用户输入后显示。像这样:

number = raw_input("Enter a number:")

但是当我运行它时,什么也没发生,我输入一个数字,它显示提示:

123
Enter a number:

(123一直是空白,直到我键入数字并按Enter键为止)

我只希望在用户输入之前显示提示。如果有人知道如何解决此问题,请帮忙。

谢谢。

2 个答案:

答案 0 :(得分:0)

您可能处于标准输出被缓冲且不会刷新直到出现换行符的环境中。

您可以利用标准错误没有缓冲的事实,而是将标准输出重定向到标准错误:

import sys
sys.stdout = sys.stderr

答案 1 :(得分:0)

感谢您的建议,我确实尝试过,但是很遗憾,它没有用,但是我确实找到了解决方法:

我必须添加

sys.stdout.flush()

每次我有

之前
variable = raw_input("A prompt")

刷新缓冲区。

尽管是第一个

raw_input("A prompt")

除非您已经打印了某些内容,否则它将无法工作

variable = raw_input("A prompt")
sys.stdout.flush()

仍然会有相同的问题,而

print"Welcome,"

variable = raw_input("A prompt")
sys.stdout.flush()

会工作的。