在终端中创建进度条可以通过提供视觉效果来极大地增强用户体验任务进度的表示。然而,在更新进度条的同时保持先前控制台输出的完整性可能是一个挑战。本文探讨了如何在 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中文网其他相关文章!