首页 >后端开发 >Python教程 >如何使用 Python 在终端中创建文本进度条?

如何使用 Python 在终端中创建文本进度条?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-02 17:26:12681浏览

How to Create a Text Progress Bar in Your Terminal Using Python?

终端中带有块字符的文本进度条

简介

在终端中创建进度条可以通过提供视觉效果来极大地增强用户体验任务进度的表示。然而,在更新进度条的同时保持先前控制台输出的完整性可能是一个挑战。本文探讨了如何在 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 2兼容性,使用以下代码代替Python 3字符串格式:

print('\r%s |%s| %s%% %s' % (prefix, bar, percent, suffix), end=printEnd)

结论:

通过利用提供的功能,您可以轻松地将文本进度条集成到控制台应用程序中,同时避免删除先前的文本。可自定义的参数允许定制适合您特定要求的进度条外观。

以上是如何使用 Python 在终端中创建文本进度条?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn