使用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("下载完成")
这种方式适合小文件。对于大文件,建议使用流式下载避免内存占用过高。
方科网络ERP图文店II版为仿代码站独立研发的网络版ERP销售程序。本本版本为方科网络ERP图文店版的简化版,去除了部分不同用的功能,使得系统更加精炼实用。考虑到图文店的特殊情况,本系统并未制作出入库功能,而是将销售作为重头,使用本系统,可以有效解决大型图文店员工多,换班数量多,订单混杂不清的情况。下单、取件、结算分别记录操作人员,真正做到订单全程跟踪!无限用户级别,不同的用户级别可以设置不同的价
流式下载大文件(节省内存)
通过设置 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 = 8192 downloaded = 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,大文件记得用流式读取。









