文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python如何实现酷炫进度条

2023-06-30 00:41

关注

这篇文章主要介绍了Python如何实现酷炫进度条的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python如何实现酷炫进度条文章都会有所收获,下面我们一起来看看吧。

1、自定义ProgressBar

最原始的办法就是不借助任何第三方工具,自己写一个进度条函数,使用time模块配合sys模块即可

import sysimport timedef progressbar(it, prefix="", size=60, file=sys.stdout):    count = len(it)    def show(j):        x = int(size*j/count)        file.write("%s[%s%s] %i/%i\r" % (prefix, "#"*x, "."*(size-x), j, count))        file.flush()            show(0)    for i, item in enumerate(it):        yield item        show(i+1)    file.write("\n")    file.flush()    for i in progressbar(range(15), "Computing: ", 40):    do_something()    time.sleep(0.1)

Python如何实现酷炫进度条

自己定义的好处就是可以将进度条定义成我们想要的形式比如上面就是使用#与·来输出,为什么不用print?因为sys.stdout就是print的一种默认输出格式,而sys.stdout.write()可以不换行打印,sys.stdout.flush()可以立即刷新输出的内容。当然也可以封装成类来更好的使用,但效果是类似的。

from __future__ import print_functionimport sysimport reclass ProgressBar(object):    DEFAULT = 'Progress: %(bar)s %(percent)3d%%'    FULL = '%(bar)s %(current)d/%(total)d (%(percent)3d%%) %(remaining)d to go'    def __init__(self, total, width=40, fmt=DEFAULT, symbol='=',                 output=sys.stderr):        assert len(symbol) == 1        self.total = total        self.width = width        self.symbol = symbol        self.output = output        self.fmt = re.sub(r'(?P<name>%\(.+?\))d',            r'\g<name>%dd' % len(str(total)), fmt)        self.current = 0    def __call__(self):        percent = self.current / float(self.total)        size = int(self.width * percent)        remaining = self.total - self.current        bar = '[' + self.symbol * size + ' ' * (self.width - size) + ']'        args = {            'total': self.total,            'bar': bar,            'current': self.current,            'percent': percent * 100,            'remaining': remaining        }        print('\r' + self.fmt % args, file=self.output, end='')    def done(self):        self.current = self.total        self()        print('', file=self.output)        from time import sleepprogress = ProgressBar(80, fmt=ProgressBar.FULL)for x in range(progress.total):    progress.current += 1    progress()    sleep(0.1)progress.done()

Python如何实现酷炫进度条

2、tqdm

之前我们说了,自定义的好处就是可以自己修改,那么使用第三方库的好处就是可以偷懒,不用自己写,拿来就能用。比如提到Python进度条那肯定会想到常用的tqdm,安装很简单pip install tqdm即可,使用也很简单,几行代码即可实现上面的进度条

from tqdm import trangeimport timefor i in trange(10):     time.sleep(1)

Python如何实现酷炫进度条

当然tqdm作为老牌的Python进度条工具,循环处理、多进程、多线程、递归处理等都是支持的,你可以在官方GitHub上学习 、解锁更多的玩法。

3、Rich

上面两种实现Python进度条的方法都学会了吗,虽然简单但是看上去并不漂亮,颜色也比较单调。所以最后压轴出场的就是一款比较小众的第三方库Rich 。Rich主要是用于在终端中打印丰富多彩的文本(最高支持1670万色)

Python如何实现酷炫进度条

所以当然可以使用Rich打印进度条,显示完成百分比,剩余时间,数据传输速度等都可以。并且样式更加酷炫,并且它是高度可配置的,因此我们可以对其进行自定义以显示所需的任何信息。使用也很简单,比如我们使用Rich来实现一个最简单的进度条

from rich.progress import trackimport  timefor step in track(range(30)):    time.sleep(0.5)

Python如何实现酷炫进度条

同时Rich支持多个进度条,这在多任务情况下监控的进度很有用

Python如何实现酷炫进度条

关于“Python如何实现酷炫进度条”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python如何实现酷炫进度条”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯