[英]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.