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
属性。或者,您可以将所有这些添加为参数,但我不确定您会发现哪些有用。
我有一个 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
属性。或者,您可以将所有这些添加为参数,但我不确定您会发现哪些有用。