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()函數在每次迭代時手動刷新緩沖區。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM