下载进度条
这篇文章会介绍使用 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)
微信扫码关注
抖音扫码关注