[英]Doing print("Enter text: ", end="") sys.stdin.readline() does not work properly in Python-3
当我这样做时发生了一些奇怪的事情
import sys
print("Enter text: ", end="")
sys.stdin.readline()
Output:
<input>
Enter text:
(这里, <input>
(不包括引号表示输入发生在该行))
为什么代码运行起来好像我的代码是
import sys
sys.stdin.readline()
print("Enter text: ", end="")
(Debian/Ubuntu, Python-3.8.10)
有什么理由吗?
我认为,在您输入输入之前,该stdout
尚未刷新。
尝试这个
import sys
print("Enter text: ", end="")
sys.stdout.flush()
sys.stdin.readline()
> Enter text: 123
这个答案解释了刷新为换行符的原因:
通常 output 到文件或控制台被缓冲,文本 output 至少在您打印换行符之前。 刷新确保缓冲的任何 output 都到达目的地。
在您的语句print("Enter text: ", end="")
中,您既不强制刷新,也不打印换行符 - 而是覆盖了end
参数(默认为\n
换行符)。 因此,指定的文本仅打印到缓冲区,尚未刷新到控制台。
内置 function print()
有一个名为flush
的参数,默认为False
:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
[..] output 是否缓冲通常由文件决定,但如果
flush
关键字参数为真,则stream被强制刷新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.