一个简单的python3 实现进度条

在写一个简单的FTP上传下载程序时,需要一个能显示下载进度的进度条,本想在网上找一个模块代替的,看的眼花缭乱,故此萌发了何不自己写一个就好了的想法!

说干就干,但是发现只是用print函数打印会不断的换行,这不算时一个进度条应有的style,在和度娘进行千百次交流后突然发现了可以用sys.stdout.write()来实现,

所以诞生了下面这个实现进度条的代码!

 1 #!/usr/bin/env/python
 2 # _*_ coding:utf-8 _*_
 3 # @Time   : 2018/7/13 1:08
 4 # @Author : Jingzeng Mo
 5 # @Project: FTP_PROGRAM
 6 
 7 import sys
 8 import math
 9 
10 
11 def progress_bar(portion, total):
12     """
13     total 总数据大小,portion 已经传送的数据大小
14     :param portion: 已经接收的数据量
15     :param total: 总数据量
16     :return: 接收数据完成,返回True
17     """
18     part = total / 50  # 1%数据的大小
19     count = math.ceil(portion / part)
20     sys.stdout.write('\r')
21     sys.stdout.write(('[%-50s]%.2f%%' % (('>' * count), portion / total * 100)))
22     sys.stdout.flush()
23 
24     if portion >= total:
25         sys.stdout.write('\n')
26         return True
27     
28     
29 # 调用方式
30 portion = 0
31 total = 254820000
32 while True:
33     portion += 1024
34     sum = progress_bar(portion, total)
35     if sum:
36         break
37 print("ok")
View Code

进度条样式如下:

本程序调用了math()中的ceil()函数来实现向上取整,用与计算 “ > " 的个数,通过 sys.stdout.write("\r")实现了将指针重置到开头,最后程序结束时,打印一个 “ \n”,

实现换行的效果!

调用时,需要两个参数,一个是已经接收的数据量(portion)和  总的文件大小(total),通过累计传输的数据量和总数据量的比值实现了 显示百分比 的计算。

所以调用时需注意:

  1. portion 是不断的累加的后的数据,而不是每次传输的数据量

  2. 数据传输完毕后会返回一个值:True 并且换行

需要调用的朋友需要注意啦!

第一次发博客,若有什么好的建议,请不吝赐教!谢谢!!!

转载于:https://www.cnblogs.com/jingzeng/p/9305595.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值