使用tqdm实现下载文件进度条

标签: java  python  http  epoll  linux

1、获取下载链接

下载链接为:http://fastsoft.onlinedown.net/down/Fcloudmusicsetup2.5.5.197764.exe

2、使用tqdm实现

  • 2.1、从response的headers中获取文件大小,同时注意:get请求中#stream=True参数的作用是仅让响应头被下载,连接保持打开状态
  • 2.2、以wb模式打开文件
  • 2.3、使用注意调用iter_content,一块一块的遍历要下载的内容,搭配stream=True,此时才开始真正的下载

原始代码:模板

 1 import requests
 2 from tqdm import tqdm
 3 
 4 def downloadFILE(url,name):
 5     resp = requests.get(url=url,stream=True)
 6     #stream=True的作用是仅让响应头被下载,连接保持打开状态,
 7     content_size = int(resp.headers['Content-Length'])/1024        #确定整个安装包的大小
 8     with open(name, "wb") as f:
 9         print "安装包整个大小是:",content_size,'k,开始下载...'
10         for data in tqdm(iterable=resp.iter_content(1024),total=content_size,unit='k',desc=name):
11     #调用iter_content,一块一块的遍历要下载的内容,搭配stream=True,此时才开始真正的下载
12     #iterable:可迭代的进度条 total:总的迭代次数 desc:进度条的前缀
13             f.write(data)
14         print name + "已经下载完毕!"
15 
16 if __name__ == '__main__':
17     url = "需要下载的文件的地址"
18     name = url.split('/')[-1]        #截取整个url最后一段即文件名
19     downloadFILE(url,name)

优化代码:

 1 from tqdm import tqdm
 2 import time,requests
 3 
 4 def downloadFILE(url,name):
 5     resp = requests.get(url=url,stream=True)
 6     content_size = int(resp.headers['Content-Length'])/1024
 7     with open(name, "wb") as f:
 8         print("Pkg total size is:",content_size,'k,start...')
 9         for data in tqdm(iterable=resp.iter_content(1024),total=content_size,unit='k',desc=name):
10             f.write(data)
11         print(name + "download finished!")
12 if __name__ == '__main__':
13     url = "http://fastsoft.onlinedown.net/down/Fcloudmusicsetup2.5.5.197764.exe"
14     name = url.split('/')[-1]
15     downloadFILE(url,name)

效果:在jupyter中

下载的文件:

双击下载的文件:

证明下载的文件没问题!

版权声明:本文为qq_40442753原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40442753/article/details/109734408

智能推荐

python进度条tqdm

文章目录 1. 简介 2. 安装 3. 使用方法 3.1 自动控制 3.2 手动控制的形式 4. 总结 4.1 基于迭代对象运行: tqdm(iterator) 4.2 手动进行更新 4.3 tqdm模块参数说明 4.4 实例 6. tqdm与pandas搭配使用 参考资料: 1. 简介 在进行一个很长的 for 循环的时候,如何查看循环进度? Tqdm 是一个智能进度表,是一个快速,可扩展的 P...

【tqdm】进度条工具

tqdm 是一种呈现循环进度的工具包,本文讲讲述他的常用用法。 Example 1 假设FL框架中一共有10个用户,每次随机抽取5个用户进行更新,一共训练6个epochs,结合tqdm显示训练进程的代码框架如下: out: 如果说我添加一行 time.sleep(2),那效果就不一样了: 这时候由于字循环也需要时间,它就会慢慢的打印出子循环的进度条:...

java web 根据video标签进度条位置传输视频流 +下载文件实现断点续传

视频断点播放: <video id="player"  src="video" controls="true" preload="auto" loop="loop" style="margin-left:9px" /> 标签播放视频,会在请求头部添加Rang...

【python】用tqdm模块实现进度条显示

tqdm在阿拉伯语中的意思是“进展”,是一个快速、扩展性强的进度条工具库,用户只需要封装任意的迭代器 tqdm(iterator)。 一张动图展示tqdm 的简单而强大: 用法 最主要的用法有3种,自动控制、手动控制或者用于脚本或命令行。 详细资料见GitHub: https://github.com/tqdm/tqdm 自动控制运行 最基本的用法,将tqdm() 直接包装...

180207 python tqdm进度条的使用

python的Tqdm模块 Code One Code Two Code 3 混合使用 enumerate(tqdm(data))...

猜你喜欢

Jupyter Notebook 使用 tqdm 显示进度条(单行显示)

Jupyter Notebook 使用 tqdm 显示进度条(单行显示) 要做的项目里面有个需要显示进度条,在 python 中使用 tqdm 是一个比较方便的方法。Tqdm 是一个快速,可扩展的Python进度条模块,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator)。 tqdm 的安装 tqdm 简单的使用 从上面代码可以看出,tqdm...

Python(十一)——tqdm模块使用 python进度条

1、介绍 tqdm 是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator)。 2、例子 例一 结果:  例二 结果: 其他参考资料: https://www.cnblogs.com/q735613050/p/10127531.html ...

冒泡排序,及改进方式,性能优化400%>>>附图解加源码

首先源码附上,源码中带有注释,看不懂没关系,源码后面附带图解,最后附上代码效率提升图 源码如下: 方案一:其实实现很简单,两层循环,每次内层迭代出最大的一个值,将其放入数组最后一个位置,外层循环的末端便往前移一位。其原理如下图 方案一代码块: 方案二:优化改进 仔细观察上面的图,我们不难发现当迭代到图下这样的情况时,其实已经全排序好了,但是我们还是需要对它进行1,2,3,4,5,6的迭代,这些情况...

css3常用选择器

先介绍一下基本选择器,如下几种 *:通配符。选择页面的所有元素 E:元素选择器。对页面的一些元素进行选择,如p,div,li等 .class:类选择器 #id:id选择器。一个Id在一个页面中只能选择,这是和类选择器的区别 E F:后代选择器。如ul li。选中ul下的li E>F:子元素选择器。如下,可以用 h1 > strong {color:red;}使h1的子元素strong变...

python is not set from command line or npm configuration

问题 猜测原因  python版本冲突 解决方案  去官网找到最新版本python 点击下载,注意记住你下载的目录,下载好以后,打开这个目录下的文件夹,Python310, 整个文件夹复制一下 在项目里运行npm config list --json 找到python的路径   我的是 C:\\Python27\\python.exe 说明项目里用的还是py...