Python控制檯輸出時重新整理當前行內容而不是輸出新行
阿新 • • 發佈:2022-04-20
需求目標
執行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
sys.stdout.flush()
函式在每次迭代時手動重新整理緩衝區。