在終端機中建立進度條可以透過提供視覺效果來大幅增強使用者體驗任務進度的表示。然而,在更新進度條的同時保持先前控制台輸出的完整性可能是一個挑戰。本文探討如何在 Python 中建立進度條,同時保留先前的文字。
這裡有一個可重複使用的進度條函數,可以解決問題:
def printProgressBar(iteration, total, prefix='', suffix='', decimals=1, length=100, fill='█', printEnd='\r'): percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total))) filledLength = int(length * iteration // total) bar = fill * filledLength + '-' * (length - filledLength) print(f'\r{prefix} |{bar}| {percent}% {suffix}', end=printEnd) if iteration == total: print()
Parameter | Description |
---|---|
iteration | Current iteration of the loop |
total | Total number of iterations |
prefix | Prefix text before the progress bar |
suffix | Suffix text after the progress bar |
decimals | Number of decimal places for percentage |
length | Width of the progress bar |
fill | Character used to fill the progress bar |
printEnd | End of line character (e.g., 'r') |
要使用進度條,請在循環內呼叫函數:
total_items = 100 for item in range(total_items): # Do your processing here... printProgressBar(item + 1, total_items)
對於簡化的用例,請考慮這個單次呼叫版本的進度bar:
def progressBar(iterable, prefix='', suffix='', decimals=1, length=100, fill='█', printEnd='\r'): total = len(iterable) def printProgressBar(iteration): percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total))) filledLength = int(length * iteration // total) bar = fill * filledLength + '-' * (length - filledLength) print(f'\r{prefix} |{bar}| {percent}% {suffix}', end=printEnd) printProgressBar(0) for i, item in enumerate(iterable): yield item printProgressBar(i + 1) print() for item in progressBar(range(100)): # Do your processing here...
此版本不需要初始呼叫即可將進度條設為 0%,並接受可迭代作為輸入。
對於Python 2相容性,使用以下程式碼取代Python 3字串格式:
print('\r%s |%s| %s%% %s' % (prefix, bar, percent, suffix), end=printEnd)
以上是如何使用 Python 在終端機中建立文字進度條?的詳細內容。更多資訊請關注PHP中文網其他相關文章!