Python 小程序之动态进度条
2023-12-14 02:47:03
动态进度条
前言
大家在下载东西的时候都会看到有一个动态的进度条在那里。进度条走完了也就下载完了。下面我写一个简易版的动态进度条,希望能对大家有所启发。
一、显示效果
大概就是这么回事儿,有那么一丝丝味儿吧?哈哈哈哈哈
很简单,大家往下看。
二、基本思路
1.引入库
代码如下:
import time
进度条计时用的。
2.基本参数
代码如下(示例):
# 进度条长度
scale = 100
# 开始时间
start_time = time.time()
首先要设置一下进度条长度,就像下载一个东西总得有大小,要不然没完没了。
然后开始计时,下面进度条开始走。
3.数据处理
代码如下(示例):
# 执行循环任务
for ....in.range:
.......... #数据处理
# 当循环完成后,添加新行以清除最后的进度条
print()
print(f'进度条走完共用时{int(elapsed_time)}秒')
数据处理大概就是这么个结构。
for循环结构会根据上面scale值进一步处理,最后走完了会另起一行打印一条消息告诉你用了多长时间。
三、数据处理
1.计算完成百分比
代码如下(示例):
# 执行循环任务
for i in range(scale + 1):
# 计算完成百分比
percent_complete = (i / scale) * 100
#进度条中的#和空白的大小
hashes = '#' * int(percent_complete)
spaces = ' ' * (scale - len(hashes))
首先把进度条中主要元素的值都算出来。像 #、空格、百分比等。。。
然后下面进一步把它们打印出来。
2.动态显示进度条
代码如下(示例):
# 组装并打印进度条
print(f'\rProgress: [{hashes}{spaces}] {percent_complete:.0f}%', end='')
# 添加一点延迟以观察进度条的变化
time.sleep(0.1)
第一段中的 \r要注意:
\r 是一个转义序列,它表示回车(carriage return)。当 \r 被打印到终端时,光标会移动到当前行的开头,但不会换行。这意味着你可以用 \r 来覆盖同一行上的先前输出。
第二段代码的意思是:
让进度条每走一下停顿一下,这样才能看出来动态的效果。要不噌的一下完了没视觉效果。
3.打印完成时间
代码如下(示例):
# 当循环完成后,添加新行以清除最后的进度条
end_time = time.time()
elapsed_time = end_time - start_time
print()
print(f'进度条走完共用时{int(elapsed_time)}秒')
print():换行的效果。
总结
我个人感觉哈,这个跟我们平时看到的进度条原理大致是一样的。只不过区别是:
- 把静态输入改成了动态输入(下载文件大小);
- 进度条走的快慢由我设置的每次走1改成了已下载的流量大小;
- 把完成时间改成了剩余时间(剩余文件大小 / 当前网速)。
文章来源:https://blog.csdn.net/weixin_57061292/article/details/134937611
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!