python3 进度条_一个简单的python3 实现进度条

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

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

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

ContractedBlock.gif

ExpandedBlockStart.gif

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 importsys8 importmath9

10

11 defprogress_bar(portion, total):12 """

13 total 总数据大小,portion 已经传送的数据大小14 :param portion: 已经接收的数据量15 :param total: 总数据量16 :return: 接收数据完成,返回True17 """

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 returnTrue27

28

29 #调用方式

30 portion =031 total = 254820000

32 whileTrue:33 portion += 1024

34 sum =progress_bar(portion, total)35 ifsum:36 break

37 print("ok")

View Code

进度条样式如下:

1318524-20180713155811637-1136893522.png

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

实现换行的效果!

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

所以调用时需注意:

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

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值