需求目標
執行Python程序的時候在控制台輸出內容的時候只顯示一行,然后自動刷新內容,像這樣:
Downloading File FooFile.txt [47%]
而不是這樣:
Downloading File FooFile.txt [47%] Downloading File FooFile.txt [48%] Downloading File FooFile.txt [49%]
實現環境
Python 3.x
import time for i in range(10): time.sleep(0.2) print ("\r Loading... ".format(i)+str(i), end="")
另一種方式
先把代碼奉上
import time import sys for i in range(5): print(str(i)*10, end='') sys.stdout.flush()
要想在同一行內輸出不同內容,就必須知道如何在同一行內輸出時覆蓋掉之前存在的字符,要在一行內輸出,使用print()
函數的關鍵字參數end
把行末的換行符替換為空字符,如果不清楚此參數請參考另一篇知文python print的參數詳解
python 中的標准輸入輸出默認是使用行緩沖的。而對於行緩沖來說,緩沖區讀取到換行符n
或回車符r
時刷新緩沖區,現在我們解決接着當前行末尾輸出的問題,我們只需要使用一個字符:回車符r
。回車符的作用是回到行首,這時我們再輸出字符將會覆蓋同一行內已存在的字符,這里不能用換行符\n。我們可以使用sys.stdout.flush()
函數在每次迭代時手動刷新緩沖區。