python 下载文件的多种方法汇总
本文档介绍了 python 下载文件的各种方式,从下载简单的小文件到用断点续传的方式下载大文件。
requests
使用 requests 模块的 get 方法从一个 url 上下载文件,在 python 爬虫中经常使用它下载简单的网页内容
urllib
使用 python 内置的 urllib 模块的 urlretrieve 方法直接将 url 请求保存成文件
urllib3
urllib3 是一个用于 http 客户端的 python 模块,它使用连接池对网络进行请求访问
wget
在 linux 系统中有 wget 命令,可以方便的下载网上的资源,python 中也有相应的 wget 模块。使用 pip install 命令安装
也可以直接在命令行中使用 wget 命令
分块下载大文件
在需要下载的文件非常大,电脑的内存空间完全不够用的情况下,可以使用 requests 模块的流模式,默认情况下 stream 参数为 false, 文件过大会导致内存不足。stream 参数为 true 的时候 requests 并不会立刻开始下载,只有在调用 iter_content 或者 iter_lines 遍历内容时下载
iter_content:一块一块的遍历要下载的内容 iter_lines:一行一行的遍历要下载的内容
进度条
在下载大文件的时候加上进度条美化下载界面,可以实时知道下载的网络速度和已经下载的文件大小,这里使用 tqdm 模块作为进度条显示,可以使用 pip install tqdm 安装
tqdm 参数说明:
- total:bytes,整个文件的大小
- unit='b': 按 bytes 为单位计算
- unit_scale=true:以 m 为单位显示速度
- unit_divisor=1024:文件大小和速度按 1024 除以,默认时按 1000 来除
- ascii=true:进度条的显示符号,用于兼容 windows 系统
- desc='vscode.exe' 进度条前面的文件名
示例结果
断点续传
http/1.1 在协议的请求头中增加了一个名为 range的字段域, range 字段域让文件从已经下载的内容开始继续下载
如果网站支持 range 字段域请求响应的状态码为 206(partial content),否则为 416(requested range not satisfiable)
range 的格式
将 range 加入到 headers 中
示例结果
启动下载一段时间后,关闭脚本重新运行,文件在断开的内容后继续下载
总结
本文介绍了常用的 7 中文件下载方式,其他的下载方式大家可以在留言区交流交流共同进步
示例代码:python 下载文件的多种方法
以上就是python 下载文件的多种方法汇总的详细内容,更多关于python 下载文件的资料请关注其它相关文章!