使用urllib、requests可实现Python文件下载。urllib无需安装,适合简单场景;requests更灵活,支持流式下载大文件并显示进度,推荐用于常规项目。

Python 实现文件下载功能有多种方式,常用且实用的方法包括使用内置库 urllib、第三方库 requests,以及处理大文件时的流式下载。下面介绍几种常见实现方式,适合不同场景需求。
使用 urllib 下载文件(无需额外安装)
Python 内置的 urllib.request 模块可以直接用于下载网络文件,适合简单场景。
示例代码:
import urllib.requesturl = "https://www.php.cn/link/0c394f0bd80e37fa0d8873166e556457"filename = "downloaded_file.pdf"
urllib.request.urlretrieve(url, filename)print(f"文件已保存为 {filename}")
优点是标准库支持,无需安装依赖;缺点是错误处理较弱,不便于控制进度或处理大文件。
使用 requests 库下载(推荐方式)
requests 是最常用的 HTTP 库,语法简洁,支持更多功能如自定义请求头、会话保持等。
立即学习“Python免费学习笔记(深入)”;
安装 requests:
pip install requests
基础下载示例:
import requestsurl = "https://www.php.cn/link/de829cc41d27f07c17771b5027167353"response = requests.get(url)
with open("file.zip", "wb") as f:f.write(response.content)print("下载完成")
这种方式适合小文件。对于大文件,建议使用流式下载避免内存占用过高。
流式下载大文件(节省内存)
通过设置 stream=True,可以分块读取文件,适用于下载大文件。
import requestsurl = "https://www.php.cn/link/adcf964dc675106763e656dcd371299f"with requests.get(url, stream=True) as response:response.raise_for_status()with open("large-file.iso", "wb") as f:for chunk in response.iter_content(chunk_size=8192):f.write(chunk)print("大文件下载完成")
chunk_size 可根据网络和磁盘性能调整,通常 8KB 到 64KB 之间较合适。
添加下载进度提示
结合 Content-Length 响应头可实现简单的进度显示。
import requestsurl = "https://www.php.cn/link/f06819f66743e5f0161904b908c53739"response = requests.get(url, stream=True)total_size = int(response.headers.get("content-length", 0))block_size = 8192downloaded = 0
with open("somefile.mp4", "wb") as f:for data in response.iter_content(block_size):downloaded += len(data)f.write(data)if total_size > 0:done = int(50 downloaded / total_size)print(f"r[{'=' done}{' ' * (50-done)}] {downloaded}/{total_size}", end="")print("n下载完成")
该方法能实时反馈下载进度,提升用户体验。
基本上就这些。选择哪种方式取决于你的具体需求:简单脚本可用 urllib,常规项目推荐 requests,大文件记得用流式读取。
以上就是Python 文件下载功能的实现方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1382000.html
微信扫一扫
支付宝扫一扫