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

Python 实现文件下载功能有多种方式,常用且实用的方法包括使用内置库 urllib、第三方库 requests,以及处理大文件时的流式下载。下面介绍几种常见实现方式,适合不同场景需求。
Python 内置的 urllib.request 模块可以直接用于下载网络文件,适合简单场景。
示例代码:import urllib.request
<p>url = "<a href="https://www.php.cn/link/0c394f0bd80e37fa0d8873166e556457">https://www.php.cn/link/0c394f0bd80e37fa0d8873166e556457</a>"
filename = "downloaded_file.pdf"</p><p>urllib.request.urlretrieve(url, filename)
print(f"文件已保存为 {filename}")
优点是标准库支持,无需安装依赖;缺点是错误处理较弱,不便于控制进度或处理大文件。
requests 是最常用的 HTTP 库,语法简洁,支持更多功能如自定义请求头、会话保持等。
立即学习“Python免费学习笔记(深入)”;
安装 requests:pip install requests
基础下载示例:
import requests
<p>url = "<a href="https://www.php.cn/link/de829cc41d27f07c17771b5027167353">https://www.php.cn/link/de829cc41d27f07c17771b5027167353</a>"
response = requests.get(url)</p><p>with open("file.zip", "wb") as f:
f.write(response.content)
print("下载完成")
这种方式适合小文件。对于大文件,建议使用流式下载避免内存占用过高。
一个类似淘宝助理、ebay助理的客户端程序,用来方便的在本地处理商店数据,并能够在本地商店、网上商店和第三方平台之间实现数据上传下载功能的工具。功能说明如下:1.连接本地商店:您可以使用ShopEx助理连接一个本地安装的商店系统,这样就可以使用助理对本地商店的商品数据进行编辑等操作,并且数据也将存放在本地商店数据库中。默认是选择“本地未安装商店”,本地还未安
0
通过设置 stream=True,可以分块读取文件,适用于下载大文件。
import requests
<p>url = "<a href="https://www.php.cn/link/adcf964dc675106763e656dcd371299f">https://www.php.cn/link/adcf964dc675106763e656dcd371299f</a>"
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 requests
<p>url = "<a href="https://www.php.cn/link/f06819f66743e5f0161904b908c53739">https://www.php.cn/link/f06819f66743e5f0161904b908c53739</a>"
response = requests.get(url, stream=True)
total_size = int(response.headers.get("content-length", 0))
block_size = 8192
downloaded = 0</p><p>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 <em> downloaded / total_size)
print(f"\r[{'=' </em> done}{' ' * (50-done)}] {downloaded}/{total_size}", end="")
print("\n下载完成")
该方法能实时反馈下载进度,提升用户体验。
基本上就这些。选择哪种方式取决于你的具体需求:简单脚本可用 urllib,常规项目推荐 requests,大文件记得用流式读取。
以上就是Python 文件下载功能的实现方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号