我使用Python 3.x并下载了progressbar2库;然而,我正在努力如何在我的程序中使用它。当有指定的范围时,一切正常,但我如何通过自己的代码实时更新进度条?我希望进度条在文本列表的每一次迭代中跳跃20%,并首先显示并在打印结果时刷新进度。CLI中的Python ProgressBar
我还发现了另一个类似于我的Stack的问题,但我更喜欢使用progressbar2库,因为它已经在那里了。考虑以下几点:
import time
import progressbar
texts = ['a', 'b', 'c', 'd', 'e']
def basic_widget_example (texts):
widgets = [progressbar.Percentage(), progressbar.Bar()]
bar = progressbar.ProgressBar (widgets = widgets, max_value = len (texts)).start()
for i in range (len (texts)):
print (texts [i])
time.sleep (0.1)
bar.update (i + 1)
bar.finish()
结果:
N/A%| |a
20%|###################### |b
40%|############################################ |c
60%|################################################################## |d
80%|######################################################################################## |e
100%|###############################################################################################################|
我想它看起来就像这样:
100%|#############################################################|
a
b
c
d
e
一种解决方案是创建2环,但你可以看到进度条显示不再准确或与我的任务同步。即使我的任务可能需要2分钟才能完成,进度条仍会在不到一秒的时间内显示100%。任何想法如何在尽可能接近准确的情况下做到这一点?
def basic_widget_example (texts):
widgets = [progressbar.Percentage(), progressbar.Bar()]
bar = progressbar.ProgressBar (widgets = widgets, max_value = len (texts)).start()
for i in range (len (texts)):
# Do something
time.sleep (0.1)
bar.update (i + 1)
bar.finish()
for text in texts:
print (text)