在python中进行socket上传文件的时候使用进度条,然后在网上找了好久,找寻相关的进度的条的使用,看了几个,发现总是无法进行调用,主要原因是在进行上传文件的时候,每次传送的数据量是固定的,数据的总大小也是知道的,对于那么多的进度条的使用调用方法感觉总是不合适,今天终于发现了如何调用比较好。

进度条的代码如下:

#!/usr/bin/env python

from __future__ import division

import math

import sys

def 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 python

import sys

sys.stdout.write('[%-10s]' % ('='*3))

sys.stdout.flush()

运行之后会发现进行了替代。其中减号表示向左对齐,10表示使用十个占位符,后面的替换中,表示使用等号替换前三个空格,在每次数量增加后,从而每次替换的数量增多,从而达到运行时候的覆盖效果,从而看起来是动态的进度条。

注意,在python的解释器中直接运行的时候,会输出和在py文件中不一样,是因为在解释器中直接执行了,在py文件中,需要时使用flush来进行刷新。

摘自:https://www.cnblogs.com/kellyseeme/p/5525020.html

python上传文件进度_python实现进度条--主要用在上传下载文件相关推荐

  1. shell脚本连接ftp推送文件夹_Linux下使用Shell脚本实现FTP自动上传和下载文件

    登录FTP实现下载文件功能 FTP服务器:192.168.0.199 FTP路径:/ftphome/data 本地路径:/local/data 将文件从FTP下载到本地的脚本如下: 批量下载脚本代码 ...

  2. java 安卓下载文件_GitHub - Charay/downloadfile: 使用Retrofit2+Rxjava+Rxandroid+okhttp的方式下载文件并存储到sd卡指定目录...

    downloadfile 使用Retrofit2+Rxjava+Rxandroid+okhttp的方式下载文件并存储到sd卡指定目录 使用: gradle Step 1.在工程build.gradle ...

  3. php抓取curl下载文件,PHP 利用 Curl 函数实现多线程抓取网页和下载文件

    PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,然而因为php语言本身不支持多线程,所以开发爬虫程序效率并不高,因此经常需要借助Cur ...

  4. python 判断文件类型_python接口自动化(三十) 上传文件时自动判断文件类型(filetype)...

    前言 如何判断一个文件的类型呢,判断这个文件是png还是jpg,还是MP3文件?filetype包是python用来判断文件类型的依赖包,github地址:https://github.com/h2n ...

  5. python判断空文件夹_python小技巧—自动判断并删除目录下的空文件夹

    一.效果展示 首先我在 E:\新建文件夹\test 创建了64个文件夹 然后我在1-10文件夹中创建一个新文件夹(此时他们就不是空文件夹了) 此时我们执行代码 如果此时目录就只剩下新建文件夹1-10 ...

  6. python运行文件后缀_Python程序存储成以.py为扩展名的程序文件用Python解释器执行。(4.5分)_学小易找答案...

    [简答题]简述助跑的两种起动方式? [填空题]在跳远技术的发展过程中,曾经出现过 . . .等3中姿势. [判断题]一般情况下,Python语言中使用符号#表示程序中的注释.(4.5分) [论述题]请 ...

  7. python读写文件函数_Python开发【第三篇】:函数读写文件

    三元运算 三元运算,是条件语句的简单的写法.如果条件为真,则返回值1,否则,返回值2. ret = 值1 if 条件 else 值2 深浅拷贝 对于数字(int)和字符串(str)而言,赋值.深拷贝. ...

  8. python内置的读取文件函数_Python函数篇(3)-内置函数、文件处理(已更新)

    1.内置函数 上一篇文章中,我重点写了reduce.map.filter3个内置函数,在本篇章节中,会补充其他的一些常规内置函数,并重点写max,min函数,其他没有说明的函数,会在后面写到类和面向对 ...

  9. python建立文件数据库_python学习-- Django根据现有数据库,自动生成models模型文件...

    Django引入外部数据库还是比较方便的,步骤如下 : 创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自 ...

最新文章

  1. 生态伙伴 | 摹客入驻飞书,体验高效产品协作设计!
  2. android 串口调试
  3. CSS position绝对定位absolute relative
  4. 如何将csv包含的数据导入SAP Cloud Platform HANA MDC里
  5. Python3反转字符串
  6. 三星s4 android 6.0吗,快了 三星手机适配Android 6.0时间公布
  7. requests模块(代理)篇
  8. 物流×科技,易流如何用IoT技术加速物流业数字化升级?...
  9. Golang 25 个保留关键字
  10. JAVA地址连接状态检测工具类
  11. ASCII码对照表(二进制、十进制、十六进制)
  12. 适用于游戏开发领域的语言
  13. 插入移动硬盘提示格式化怎么办?数据还有机会找回吗
  14. mysql 多表中间表查询_mysql多表连接查询
  15. Arch Linux KDE Plasma + Windows 11 双系统安装指南
  16. 汽车厂商集体大降价,谁更受伤?
  17. CList POSITION
  18. 用Python数据处理分析入门必备系列文章:环境安装
  19. BMW专注研发、5年累计超50亿欧元
  20. 服饰美妆新品 | 阿迪达斯可循环跑鞋第三代LOOP系列发布;赫丽尔斯X吃豆人跨界限定系列推出...

热门文章

  1. 【Flink】Flink使用withParameters(Configuration)传参
  2. CGLI 报错 :VerifyError: class net.sf.cglib.core.DebuggingClassWriter overrides final method visit
  3. hive-04-Hive函数大全
  4. spark学习-Spark Streaming初次理解
  5. ecs服务器换系统,ecs服务器更换操作系统
  6. pytorch 指定卡1_收藏 | 13则PyTorch使用的小窍门
  7. 如何从零设计一款牛逼的高并发架构(建议收藏)
  8. 生产环境中,RabbitMQ 持续积压消息不进行ack ,发生什么了?
  9. Java中的浮点数四舍五入到小数点后2位的一些实用方法
  10. 没在今天以前就此沉沦下去纯属侥幸