如何用tqdm模块创建文件下载进度条?

2026-05-26 14:432阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计590个文字,预计阅读时间需要3分钟。

如何用tqdm模块创建文件下载进度条?

1. 获取下载链接 - 下载链接:[点击下载](http://fastsoft.onlinedown.net/down/Fcloudmusicsetup2.5.5.197764.exe)

2. 使用tqdm库 - 实现进度显示

3. 从headers获取文件大小 - 注意:get请求的headers中获取


1、获取下载链接

下载链接为:​​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)


如何用tqdm模块创建文件下载进度条?


​优化代码:​

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 = "fastsoft.onlinedown.net/down/Fcloudmusicsetup2.5.5.197764.exe"
14 name = url.split('/')[-1]
15 downloadFILE(url,name)


​效果:在jupyter中​

​下载的文件:​

双击下载的文件:

​证明下载的文件没问题!​




更多内容详见微信公众号:Python研究所



本文共计590个文字,预计阅读时间需要3分钟。

如何用tqdm模块创建文件下载进度条?

1. 获取下载链接 - 下载链接:[点击下载](http://fastsoft.onlinedown.net/down/Fcloudmusicsetup2.5.5.197764.exe)

2. 使用tqdm库 - 实现进度显示

3. 从headers获取文件大小 - 注意:get请求的headers中获取


1、获取下载链接

下载链接为:​​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)


如何用tqdm模块创建文件下载进度条?


​优化代码:​

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 = "fastsoft.onlinedown.net/down/Fcloudmusicsetup2.5.5.197764.exe"
14 name = url.split('/')[-1]
15 downloadFILE(url,name)


​效果:在jupyter中​

​下载的文件:​

双击下载的文件:

​证明下载的文件没问题!​




更多内容详见微信公众号:Python研究所