Python 2.7 - 没有外部库的进度条

Python 2.7 - Progress Bar without External Library

我有一个 python 函数可以从一些传感器数据文件中提取图像。该函数遍历图像并按顺序提取它们。

传感器数据文件中大约有 25000 张图像。数量不固定。但是我有一个动态存储 messages/images 数量的变量。

我想设计一个不使用任何外部库的进度条。用'#'字符完成的进度条打印百分比类似于:

Progress 53%: #########################

如何将图像数量标准化为 1-100%?

在 IDLE 内部工作时并没有很好的方法来计算百分比(因为空闲不支持任何清除或 \b)。

所以,我只是简单地把它变成了一个可视化的进度条:

from __future__ import print_function
import time

class Progress():
    def __init__(self, total_images):
        self.total_images = total_images
        self.bar_width = 5
        self.previous = 0
        self.prompt = "Progress: "
        print(self.prompt, end='')

    def update(self, image_number):
        percentage = float(image_number) / self.total_images
        number_of_ticks = percentage * self.bar_width
        delta = int(number_of_ticks - self.previous)
        self.previous = int(number_of_ticks)
        if delta > 0:
            print("#" * delta, end='')

total_images = 10
progress_bar = Progress(total_images)
for current_image in range(1, total_images+1):
    progress_bar.update(current_image)
    time.sleep(.1)

输出:

Progress: #####

如果你想要更长的条,可以修改self.bar_width属性。或者,您可以将所有这些添加为参数,但我不确定您会发现哪些有用。