/s/6Q (2018-09-17)
一個好的腳本或者程序要能夠直觀的顯示出當前的進度,就像你在上拷貝一個文件,會顯示已經完成了多少,還剩下多少讀取中進度條gif,而不是呆呆的看著屏幕等待。下面就介紹幾種常用的為腳本添加進度條的方法。
1、最簡單的方法
依次打印出當前進度
import time
n = 100
for i in range(n):
time.sleep(0.1)
if(i+1)%10 == 0:
print(i+1)
如下:
但是這種方法有個缺點,就是容易被自己的進度刷屏。
2、只顯示當前進度,避免刷屏
在print的時候加上”\r”,這樣就可以在同一個地方顯示當前進度,而不會被刷屏。
import time
n = 100
for i in range(n):
time.sleep(0.1)
if(i + 1) == 0:
print(i+1, end = "\r")
3、添加進度條
如果覺得僅僅數字顯示進度不夠美觀,那么可以添加圖形進度條
import sys,time
#定義一個進度條
def process_bar(num, total):
rate = float(num)/total
ratenum = int(100*rate)
r = '\r[{}{}]{}%'.format('*'*ratenum,' '*(100-ratenum), ratenum)
sys.stdout.write(r)
sys.stdout.flush()

i,n =0,100
for i in range(n):
time.sleep(0.01)
process_bar(i+1,n)
效果如下
這種方式實質上是每次重新輸出一次進度,并且通過 “\r”覆蓋原來的進度條。”\r”的作用是回到行首,不過在本人測試中似乎有一點小bug,就是當終端寬度不夠時讀取中進度條gif,回到行首就變成了另起一行,就會出現被進度條刷屏的問題。
4、使用tqdm模塊
首先是安裝該模塊,然后運行即可
import time
from tqdm import tqdm
for i in tqdm(range(100)):
time.sleep(0.05)
效果如下:
5、使用模塊
模塊提供了各種各樣的進度條樣式。并且能夠自定義一些參數
import time
from progress.bar import Bar

#可以通過fill設置進度條填充符號,默認“#”
#可以通過suffix設置成百分比顯示
bar = Bar("Loading", fill='$', max = 100, suffix = '%(percent)d%%')
for i in bar.iter(range(100)):
time.sleep(0.01)
你還可以設置其他形式的進度條,如下:
==== THE END ====
參考資料:///
///--bar