下載進度條
這篇文章會介紹使用 Python 的 print,搭配 for 迴圈、字串格式化等功能,實作一個下載的進度條效果 ( 也可應用於執行進度、完成進度...等 )。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
基本原理
在 Python 可以透過 print 印出結果,如果在印出的文字前方加上「\r」的命令,每次印出時會將游標移動到最前方,搭配 end 不換行的設定,就能做出類似「畫面更新」的效果,下面的程式執行後,畫面上會顯示倒數秒數。
參考:time.sleep、print
import time
n = 10
for i in range(n+1):
print(f'\r倒數 {n-i} 秒', end='')
time.sleep(1)
print('\r時間到', end='')
編輯程式
了解原理後,開始實作「進度條」的效果,首先使用「_" "*(n-i)
」,設定一開始「空白」的進度條長度 ( 空白字元 x 幾個 ),接著前方加上「"█"*i
_」,每次 for 迴圈執行時,就會將第一個空白置換成一個方塊字元,執行後就會出現一個進度條效果。( 因為字元大小的緣故,在本機執行和 Colab 上執行,畫面會有寬度上的不同 )
import time
n = 20 # 設定進度條總長
for i in range(n+1):
print(f'\r[{"█"*i}{" "*(n-i)}] {i*100/n}%', end='') # 輸出不換行的內容
time.sleep(0.5)
也可以將長條圖換成符號的方式呈現,下方的程式執行後,會做出類似風車旋轉的下載進度效果。
參考:特殊符號 - 點點
import time
n = 100
icon = '⋮⋰⋯⋱' # 建立旋轉的符號清單
for i in range(n+1):
print(f'\r{icon[i%4]} {i*100/n}%', end='')
time.sleep(0.1)
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~