Python代码进度条实现方法详解:自定义进度条和第三方库的使用
版权申诉
108 浏览量
更新于2024-08-30
收藏 16KB DOCX 举报
Python 进度条实现方法详解
Python 是一种流行的编程语言,广泛应用于数据科学、人工智能、Web 开发等领域。在编写 Python 代码时,添加进度条可以实时展示任务处理情况,提高用户体验。本文将介绍几种给 Python 代码添加酷炫进度条的方法。
自定义进度条
最原始的办法是自己编写一个进度条函数,使用 time 模块和 sys 模块。可以使用以下代码:
```
import sys
import time
def 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)
```
这个方法的优点是可以自定义进度条的格式,例如使用 "#" 和 "." 来输出。使用 sys.stdout.write() 可以不换行打印,sys.stdout.flush() 可以立即刷新输出的内容。
封装进度条类
当然,也可以将进度条封装成类,以便更好地使用。例如:
```
from __future__ import print_function
import sys
import re
class ProgressBar(object):
DEFAULT_FMT = "%(bar)s %(percent)3d%%"
FULL_FMT = "%(bar)s %(current)d/%(total)d (%(percent)3d%%) %(remaining)dtog"
def __init__(self, total, width=40, fmt=DEFAULT_FMT, symbol="##-"):
assert len(symbol) == 1
self.total = total
self.width = width
self.fmt = fmt
self.symbol = symbol
def __call__(self, value):
bar = ""
percent = int((value/self.total)*100)
for i in range(self.width):
if i < int(self.width * percent/100):
bar += self.symbol
else:
bar += " "
return self.fmt % {
"bar": bar,
"current": value,
"total": self.total,
"percent": percent,
"remaining": self.total - value
}
```
这个类提供了更多的自定义选项,可以根据需要选择不同的进度条格式。
使用第三方库
当然,也可以使用第三方库来实现进度条,例如 tqdm、progressbar 等。这些库提供了更多的功能和选项,可以满足不同的需求。
添加进度条可以提高 Python 代码的用户体验,既可以使用自定义函数,也可以封装成类或使用第三方库。
175 浏览量
2022-06-12 上传
2023-03-11 上传
weixin_41031635
- 粉丝: 0
- 资源: 5万+
最新资源
- Employee_Tracker
- 8-coming-soon
- raffaello:将照片发送到您当地的照片零售商-开源
- todoredux:使用React,Redux和Scss的todo应用程序
- crud_app:一个在React中编辑用户记录的CRUD应用程序
- PV-Battery:该项目的目标是为弗拉芒语参考家庭设计光伏和电池系统,其中要考虑由电费以及屋顶类型和方向决定的不同情况。 光伏和电池系统的设计涉及输入数据的使用,组件的选择,功率流的计算等,以从财务角度提供针对具体案例的最佳解决方案。 当然,设计还应考虑相关的实践,操作和法规方面
- BayesianEstimatorSelfing:一种用于估计自我受精率和其他交配系统参数的贝叶斯方法
- ruah44.github.io:得益于https,结构清晰
- torch-scatter和torch-sparse用于处理图形数据和稀疏张量·「下載地址」
- accessibility:媒体可访问性的提示,资源和提示的集合
- react-todolistt:在线React Editor和IDE:编译,运行和托管React应用
- Practise_Makes_Perfect
- a-stream:用于管理异步事件的库
- kb:知识库说明
- 愤怒的小鸟java程序源码-BallBattle:小鱼成长游戏
- fast bev修改版最终板端测试结果,由之前的9提升至25FPS