簡體   English   中英

執行 print("Enter text: ", end="") sys.stdin.readline() 在 Python-3 中無法正常工作

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM