1. 程式人生 > 其它 >Python控制檯輸出時重新整理當前行內容而不是輸出新行

Python控制檯輸出時重新整理當前行內容而不是輸出新行

需求目標

執行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()函式在每次迭代時手動重新整理緩衝區。