咱们都知道,进度条是用来直观展现流程所需时刻的优异东西,避免咱们忧虑流程会忽然挂掉,并且咱们咱们能够用它来猜想代码运转是不是正常,凭借进度条,任何一个人都能直观地看到脚本最新的发展状况。
假如你之前没用过进度条,多半是觉得它会增加不必要的杂乱性或许很难保护,其实不然。要加一个进度条其实只需要几行代码。在这几行代码中,咱们咱们能够看看如安在命令行脚本以及 PySimpleGUI UI 中增加进度条。
下文将介绍 4 个常用的 Python 进度条库:
Progress
第一个要介绍的 Python 库是 Progress。
你只需要界说迭代的次数、进度条类型并在每次迭代时奉告进度条。
import timefrom progress.bar import IncrementalBarmylist = [1,2,3,4,5,6,7,8]bar = IncrementalBar('Countdown', max = len(mylist))for item in mylist: bar.next()time.sleep(1)bar.finish()
Progress 完成的进度条作用如下:
Progressbar 的增量进度条
假如你不喜欢该进度条的格局,还能够从以下格局中选择:
ProgressBar 支撑的进度条类型。
相关文档:https://pypi.org/project/progress/1.5/
tqdm
下面咱们看一下 tqdm 库。
和之前见过的库差不多,这两行代码也十分类似,在设置方面有一点点不同:
importtimefromtqdmimporttqdmmylist=[1,2,3,4,5,6,7,8]foriintqdm(mylist): time.sleep(1)
tqdm 完成的进度条作用如下:
这个进度条也供给了几种选项。
相关文档:https://tqdm.github.io/
Alive Progress
望文生义,这个库能够使得进度条变得生动起来,它比本来咱们见过的进度条多了一些动画作用。
从代码视点来说比较类似:
from alive_progress import alive_barimport timemylist = [1,2,3,4,5,6,7,8]with alive_bar(len(mylist)) as bar: for i in mylist: bar() time.sleep(1)
进度条的外观和预期差不多:
这种进度条有一些异乎寻常的功用,运用起来会比较风趣,功用概况可见项目:https://github.com/rsalmei/alive-progress
PySimpleGUI
用 PySimpleGUI 得到图形化进度条
咱们咱们能够加一行简略的代码,在命令行脚本中得到图形化进度条。
为了完成上述内容,咱们应该的代码是:
import PySimpleGUI as sgimport timemylist = [1,2,3,4,5,6,7,8]for i, item in enumerate(mylist): sg.one_line_progress_meter('This is my progress meter!', i+1, len(mylist), '-key-') time.sleep(1)
PySimpleGUI 应用程序中的进度条
项目作者之前曾经在 GitHub 上评论过「怎么快速发动 Python UI,然后运用 UI 创立比较东西」。在这个项目里,作者还评论了一下怎么集成进度条。
代码如下:
import PySimpleGUI as sgimport timemylist = [1,2,3,4,5,6,7,8]progressbar = [ [sg.ProgressBar(len(mylist), orientation='h', size=(51, 10), key='progressbar')]]outputwin = [ [sg.Output(size=(78,20))]]layout = [ [sg.frame('Progress',layout= progressbar)], [sg.frame('Output', layout = outputwin)], [sg.Submit('Start'),sg.Cancel()]]window = sg.Window('Custom Progress Meter', layout)progress_bar = window['progressbar'] while True: event, values = window.read(timeout=10) if event == 'Cancel' or event is None: break elifevent=='Start': fori,iteminenumerate(mylist): print(item) time.sleep(1) progress_bar.UpdateBar(i+1)window.close()
没错,在 Python 脚本中运用进度条只需要几行代码,一点也不杂乱。有了进度条,今后也不必再猜想脚本运转地怎么样了。