Python展示requests下载文件进度(赶紧收藏吧)

简介: Python展示requests下载文件进度

前言


大家在用Python写一些小程序的时候,经常都会用到文件下载,对于一些较小的文件,大家可能不太在乎文件的下载进度,因为一会就下载完毕了。

但是当文件较大,比如下载chromedriver的时候,我们如果能够看到下载的进度条,那该多么友好。毕竟在npm,pip安装包的时候都有类似的进度条

那笔者今天就给大家分享一个展示文件下载进度条的方法。

requests


requests库相信大家都用过,做接口测试少不了它。其实我们平时下载文件,也可以用requests做到的,比如有这样一个下载地址:

Termius.exe

我们要下载它,应该怎么做呢?

这里来写一下伪代码,非常好懂。


# 第一步: 访问这个链接
import requests
r = requests.get("https://autoupdate.termius.com/windows/Termius.exe")
# 第二步: 获取返回的文件内容,并写到本地
with open(r"./termius.exe", "wb") as f:
    f.write(r.content)

由于我这个文件很大,所以过程很漫长,我这边就不展示具体细节了。大家可以找个几M的小文件试试。放上最终结果:

32.jpg

可以看到,执行完毕,文件也获取到了

思考


有没有觉得,这样下载文件很单调,我也不知道进度,比如下载了多少了,特别是针对大一点的文件,一直这样等着我以为他断开连接了呢。

如果咱们能在下载文件的时候,显示出进度条该多好,比如迅雷/百度网盘那样子的。

只需要安装一个库即可


要做到这些,我们只需要安装tqdm库就行了。


pip install tqdm

下面是带注释的示例代码:


import requests
from tqdm import tqdm
def download(url: str, fname: str):
    # 用流stream的方式获取url的数据
    resp = requests.get(url, stream=True)
    # 拿到文件的长度,并把total初始化为0
    total = int(resp.headers.get('content-length', 0))
    # 打开当前目录的fname文件(名字你来传入)
    # 初始化tqdm,传入总数,文件名等数据,接着就是写入,更新等操作了
    with open(fname, 'wb') as file, tqdm(
        desc=fname,
        total=total,
        unit='iB',
        unit_scale=True,
        unit_divisor=1024,
    ) as bar:
        for data in resp.iter_content(chunk_size=1024):
            size = file.write(data)
            bar.update(size)
if __name__ == "__main__":
    # 下载文件,并传入文件名
    url = "https://autoupdate.termius.com/windows/Termius.exe"
    download("https://autoupdate.termius.com/windows/Termius.exe", "haha.exe")

代码比较简单,tqdm的内容基本都是固定写法,大家不用疑惑,注意好requests等自己熟悉的部分就好。

我们来看看gif效果图,是不是狂炫酷霸吊炸天(别好奇我的cmd为何这么帅气,我是不会告诉你滴,除非你点赞):

33.PNG

image


好啦,今天的小知识就分享到这里。拜了个拜!




相关文章
|
1月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
20天前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
18 2
|
1月前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
|
1月前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
1月前
|
Python
Python 三方库下载安装
Python 三方库下载安装
28 1
|
2月前
|
UED Python
Python requests库下载文件时展示进度条的实现方法
以上就是使用Python `requests`库下载文件时展示进度条的一种实现方法,它不仅简洁易懂,而且在实际应用中非常实用。
95 0
|
Python
python下载文件的三种方法
python下载文件的三种方法
218 0
|
编解码 数据安全/隐私保护 Python
Python 连接FTP服务器并实现文件夹下载实例演示,python区分ftp目录下文件和文件夹方法,ftp目录下包含中文名问题处理
Python 连接FTP服务器并实现文件夹下载实例演示,python区分ftp目录下文件和文件夹方法,ftp目录下包含中文名问题处理
255 0
|
数据采集 Linux Python
Python 下载文件的多种方法
本文档介绍了 Python 下载文件的各种方式,从下载简单的小文件到用断点续传的方式下载大文件。
772 0
Python 下载文件的多种方法
|
5天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
下一篇
无影云桌面