python实现进度条--主要用在上传下载文件
来源:互联网 发布:七牛域名冲突 编辑:程序博客网 时间:2024/04/29 19:25
在python中进行socket上传文件的时候使用进度条,然后在网上找了好久,找寻相关的进度的条的使用,看了几个,发现总是无法进行调用,主要原因是在进行上传文件的时候,每次传送的数据量是固定的,数据的总大小也是知道的,对于那么多的进度条的使用调用方法感觉总是不合适,今天终于发现了如何调用比较好。
进度条的代码如下:
#!/usr/bin/env pythonfrom __future__ import divisionimport mathimport sysdef progressbar(cur,total): percent = '{:.2%}'.format(cur / total) sys.stdout.write('\r') sys.stdout.write('[%-50s] %s' % ( '=' * int(math.floor(cur * 50 /total)),percent)) sys.stdout.flush() if cur == total: sys.stdout.write('\n')if __name__ == '__main__': file_size = 102400000 size = 1024 while file_size > 0: progressbar(size*10/file_size,10) file_size -= 1024 #for i in range(11): # progressbar(i,10) # time.sleep(1)
在进行计算百分比的时候,需要用到除法,而基本上都是整数,从而使用到dicision。
在函数progressbar中,cur表示当前的数值,total表示总的数值。
在输出进度的时候,每次都是输出一行,但是每次输出的时候不换行,从而使用\r,每次回到行首,但是不进行换行,然后输出其他的内容对原内容进行覆盖,也就是sys.stdout.write的第二句话。
flush是为了立即进行显示,也就是将进度条直接显示。
在最后,如果当前的等于总的,那么久输出一个回车进行换行,表示输出进度结束。
在测试代码中,file_size表示为文件的大小,size表示每次都要传送的数据量,在循环中,表示每次需要传送1024个字节,然后输出进度条,运行效果如下:
[root@python 519]# python processbar.py[==================================================] 100.00%
主要就是在开始的时候,觉得需要知道传输文件的速度,才能估算传输的进度,但是使用文件的大小也是可以估算的,从而也就有了size*10/1024,将长度固定为10个,从而输出进度。
在看第二句输出的时候覆盖的时候,可以使用如下的代码:
#!/usr/bin/env pythonimport syssys.stdout.write('[%-10s]' % ('='*3))sys.stdout.flush()
运行之后会发现进行了替代。其中减号表示向左对齐,10表示使用十个占位符,后面的替换中,表示使用等号替换前三个空格,在每次数量增加后,从而每次替换的数量增多,从而达到运行时候的覆盖效果,从而看起来是动态的进度条。
注意,在python的解释器中直接运行的时候,会输出和在py文件中不一样,是因为在解释器中直接执行了,在py文件中,需要时使用flush来进行刷新。
0 0
- python实现进度条--主要用在上传下载文件
- python实现socket上传下载文件-进度条显示
- python实现文件上传下载
- python实现ftp上传下载文件
- python 实现ftp上传下载文件
- Python + Paramiko实现sftp文件上传下载
- python paramiko模块实现sftp上传下载文件
- Python + Paramiko实现sftp文件上传下载
- 在Struts中实现文件上传下载
- 用SmartUpload实现文件的上传下载(在servlet中实现)
- 简单实现的自定义圆环进度条,可使用于文件的上传下载图片加载等地方.
- 300 行 python 代码的轻量级 HTTPServer 实现文件上传下载
- JSP用common-fileupload实现文件上传下载
- jspsmart实现文件上传下载
- jspsmart实现文件上传下载
- c#实现文件上传下载
- jspSmartUpload 实现文件上传下载
- BCB实现文件上传下载
- servlet的执行原理与生命周期
- Apache Atlas安装文档
- liunx vim常用设置
- 如何在ListView中的TextView显示跑马灯效果?
- Java注解基础(一)
- python实现进度条--主要用在上传下载文件
- AlertDialog 点击按钮后不关闭的处理办法
- 线程优化-使用线程池ThreadPoolExecutor
- JAVA面试2
- 使用RPM包安装docker1.10.3脚本
- Java-jVM-虚拟机判定两个 Java 类是相同
- 国内从事机器视觉领域的公司
- 【蓝桥杯】穿越雷区-java语言描述
- 蓝桥杯 历届试题 显示二叉树