当前位置: 首页 > 科技观察

您完成2019年的编码了吗?做一个Python进度条看看还剩多少

时间:2023-03-18 14:41:48 科技观察

我们都知道进度条是一个非常优秀的可视化显示进程所需时间的工具,免得我们担心进程会突然挂掉,而我们可以用它来预测代码是否正常运行,借助进度条,大家可以直观的看到脚本的最新进度。如果您以前没有使用过进度条,您可能会认为它增加了不必要的复杂性或难以维护,但事实并非如此。添加进度条只需要几行代码。在这几行代码中,我们可以看到如何向命令行脚本以及PySimpleGUIUI添加进度条。下面将介绍4个常用的Python进度条库:Progress首先要介绍的Python库是Progress。你只需要定义迭代次数,进度条类型并告诉进度条每次迭代。importtimefromprogress.barimportIncrementalBarmylist=[1,2,3,4,5,6,7,8]bar=IncrementalBar('Countdown',max=len(mylist))foriteminmylist: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):时间。sleep(1)tqdm实现的进度条效果如下:这个进度条也提供了几个选项。相关文档:https://tqdm.github.io/AliveProgress顾名思义,这个库可以让进度条活起来。它比我们之前看到的进度条有更多的动画效果。从代码上看,类似:fromalive_progressimportalive_barimporttimemylist=[1,2,3,4,5,6,7,8]withalive_bar(len(mylist))asbar:foriinmylist:bar()time.sleep(1)oftheprogressbarAppearancesimilartoexpectation:这种进度条有一些独特的功能,使用起来会更有趣,功能详情可以在项目中找到:https://github.com/rsalmei/alive-progressPySimpleGUI使用PySimpleGUI获取图形化进度条我们可以在命令行脚本中添加一行简单的代码来获取图形化进度条。为了实现以上,我们需要的代码是:importPySimpleGUIassgimporttimemylist=[1,2,3,4,5,6,7,8]fori,iteminenumerate(mylist):sg.one_line_progress_meter('Thisismyprogressmeter!',i+1、len(mylist),'-key-')time.sleep(1)PySimpleGUIapplication中的Progressbar该项目的作者之前讨论过《如何快速启动一个PythonUI,然后使用该UI创建一个对比工具“在GitHub上。在这个项目中,作者还讨论了如何集成进度条。代码如下:importPySimpleGUIassgimporttimemylist=[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('CustomProgressMeter',layout)progress_bar=window['progressbar']whileTrue:event,values=window.read(timeout=10)ifevent=='取消'oreventisNone:breaklifevent=='开始':fori,iteminenumerate(mylist):print(item)time.sleep(1)progress_bar.UpdateBar(i+1)window.close()没错,在Python脚本中使用进度条只是几行代码,一点也不复杂。有了进度条,以后就不用再猜测脚本运行的怎么样了。