Python 文件下载功能的实现方法

冰川箭仙
发布: 2025-11-21 22:20:02
原创
697人浏览过
使用urllib、requests可实现Python文件下载。urllib无需安装,适合简单场景;requests更灵活,支持流式下载大文件并显示进度,推荐用于常规项目。

python 文件下载功能的实现方法

Python 实现文件下载功能有多种方式,常用且实用的方法包括使用内置库 urllib、第三方库 requests,以及处理大文件时的流式下载。下面介绍几种常见实现方式,适合不同场景需求。

使用 urllib 下载文件(无需额外安装)

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 库下载(推荐方式)

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("下载完成")
登录后复制

这种方式适合小文件。对于大文件,建议使用流式下载避免内存占用过高。

ShopEx助理
ShopEx助理

一个类似淘宝助理、ebay助理的客户端程序,用来方便的在本地处理商店数据,并能够在本地商店、网上商店和第三方平台之间实现数据上传下载功能的工具。功能说明如下:1.连接本地商店:您可以使用ShopEx助理连接一个本地安装的商店系统,这样就可以使用助理对本地商店的商品数据进行编辑等操作,并且数据也将存放在本地商店数据库中。默认是选择“本地未安装商店”,本地还未安

ShopEx助理 0
查看详情 ShopEx助理

流式下载大文件(节省内存)

通过设置 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中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号