You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python的wget.download()报HTTP Error 404,手动wget命令却正常

解决Python wget.download返回404但命令行wget正常下载的问题

问题重现

执行Python代码时触发404错误:

wget.download("http://downloads.dell.com/FOLDER06808437M/1/7760%20AIO-WIN10-A11-5VNTG.CAB")

错误详情:

File "C:\Program Files\Python39\lib\urllib\request.py", line 641, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)urllib.error.HTTPError: HTTP Error 404: Not Found

但手动执行命令行wget可正常完成下载:

wget http://downloads.dell.com/FOLDER06808437M/1/7760%20AIO-WIN10-A11-5VNTG.CAB

问题原因

Python的wget.download依赖urllib处理请求,会对传入URL做二次编码:原URL中的%20(空格的URL编码)会被再次编码为%2520,导致服务器接收到的路径与实际资源路径不匹配,返回404。而命令行wget会直接解析%20为空格,不会重复编码,因此能正确访问资源。

解决方案

方案1:替换URL编码为实际空格

把URL里的%20换成真实空格,让wget.download自动完成一次正确编码:

import wget
wget.download("http://downloads.dell.com/FOLDER06808437M/1/7760 AIO-WIN10-A11-5VNTG.CAB")

方案2:先解码URL再传入

用urllib.parse.unquote解码已编码的URL,避免二次编码:

import wget
from urllib.parse import unquote

url = unquote("http://downloads.dell.com/FOLDER06808437M/1/7760%20AIO-WIN10-A11-5VNTG.CAB")
wget.download(url)

方案3:直接调用系统wget命令

如果环境已安装wget,通过subprocess直接调用系统命令,复用命令行的正确行为:

import subprocess
subprocess.run(["wget", "http://downloads.dell.com/FOLDER06808437M/1/7760%20AIO-WIN10-A11-5VNTG.CAB"], check=True)

内容的提问来源于stack exchange,提问作者Burak Ertan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 06:21:57