要實作進度條,首先要先搞清楚進度條的原理是什麼
本質上,進度條就是在 print 輸出的時候沒有換行,一直在固定的位置重新整理輸出的值,那這是怎麼做到的呢?
這就涉及到文本系統的控制符了
- \r: 将光标移動到目前行的首位而不換行
- \n: 将光标移動到下一行,并不移動到首位
- \r\n: 将光标移動到下一行首位
徹底搞清楚了上面的控制符,進度條也就完成一半了,接下來就是實際的編碼了,下面實作了 n 中進度條的樣式
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import time
def progress_bar(num):
j = "#"; k = "="; t = "|/-\\"; #s = " " * (num + 1)
for i in range(0, num + 1):
j += "#"; k += "="; s = ("=" * i) + (" " * (num - i))
#print(int(i/num*100), end='%\r')
#print('%.2f' % (i/num*100), end='%\r')
#print('%.2f' % (i*100/num), end='%\r')
#print('complete percent:', time.strftime("%Y-%m-%d %H:%M:%S", \
# time.localtime()), int((i/num)*100), end='%\r')
#print(str(int(i/num*100)) + '% ' + j + '->', end='\r')
#print(k + ">" + str(int(i/num*100)), end='%\r')
#print("[%s]" % t[i%4], end='\r')
#print("[%s][%s][%.2f" % (t[i%4], k, (i/num*100)), "%]", end='\r')
print("[%s][%s][%.2f" % (t[i%4], s, (i/num*100)), "%]", end='\r')
time.sleep(0.1)
print()
progress_bar(32)
'''
# 除了自己實作以外,Python 還提供了Tqdm 子產品
# Tqdm 是一個快速、擴充性強的進度條工具庫,它提供了非常多的接口,有興趣的小夥伴可以了解一下
# GitHub 位址是:https://github.com/tqdm/tqdm
# 我們來看下,如何使用 Tqdm 子產品來實作進度條
# 首先是安裝:pip install tqdm
'''
#from tqdm import tqdm
#for i in tqdm(range(1, 500)):
# sleep(0.01)
運作結果:

參考文章:https://www.cnblogs.com/jsben/p/5792952.html
https://blog.csdn.net/u013832707/article/details/73608504
https://blog.csdn.net/yuehailin/article/details/53999288