1. 程式人生 > >Python 2 & Python 3列印程式執行進度

Python 2 & Python 3列印程式執行進度

  在跑耗費時間比較長的程式時我們往往需要估計下還需要多長時間,這個時候如果知道了已經完成了多少,就可以很好地幫助我們估計時間。

  這段程式碼是基於 python 3 編寫的,像使用 python 2 的同學可以在程式的最上面新增這句話

# -*- coding=utf-8 -*-
from __future__ import print_function

  函式的具體程式碼如下

def progress(percent,width=50):
	'''進度列印功能
	   每次的輸入是已經完成總任務的百分之多少

	'''
	if percent >= 100
: percent=100 show_str=('[%%-%ds]' %width) %(int(width * percent/100)*"#") #字串拼接的巢狀使用 print('\r%s %d%%' %(show_str,percent),end='')

其中可以看到函式的輸入是已經執行的百分比,下面將介紹一個使用這個方法的完整例子

# -*- coding=utf-8 -*-
from __future__ import print_function

def progress(percent,width=50):
	'''進度列印功能
	   每次的輸入是已經完成總任務的百分之多少

	'''
if percent >= 100: percent=100 show_str=('[%%-%ds]' %width) %(int(width * percent/100)*"#") #字串拼接的巢狀使用 print('\r%s %d%%' %(show_str,percent),end='') total = 100 count = 0 for i in range(total): a = i*2 count += 1 progress(100*count/total) print ('\nfinished!')

  執行上面的程式碼會得到如下的輸出

[##################################################] 100%
finished!

其中有幾點需要注意,首先是函式的輸入,因為要輸入的是百分比,所以要乘以 100 ,即 progress(100*count/total);另外在執行 progress 的過程中最好不要再有其他的 print 操作,因為這樣的話就沒有辦法保證輸出的一個進度條,會得到很多行的進度條(你額外呼叫了 print 多少次,就會有多少行進度條);最後如果你想在執行完 print 操作後再 print 其他的東西,最好在需要列印的前面加上 \n,否則會直接在進度條後面打印出來。