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

Python用wget爬取特定URL遇.tmp文件NotFoundError问题求助

问题分析

错误的核心是Windows系统默认的路径长度限制(260字符)。目标文件URL解码后生成的文件名过长,加上临时文件后缀后,总路径长度超过了Windows允许的最大值,导致tempfile.mkstemp无法创建临时文件,抛出FileNotFoundError。

解决方案

1. 手动指定短文件名下载

直接给下载文件指定简短文件名,绕过URL自动生成的长文件名限制。修改代码如下:

import os
import wget

def download_file(url, save_path):
    try:
        print("Downloading file...")
        wget.download(url, save_path)
        print("\nDownload complete!")
    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    file_url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/CADAL06210101_%E7%9A%87%E6%B8%85%E7%B6%93%E8%A7%A3%E7%BA%8C%E7%B7%A8%EF%BC%9A%E6%98%93%E5%9C%96%E6%A2%9D%E8%BE%AE%E7%9A%87%E6%B8%85%E7%B6%93%E8%A7%A3%E7%BA%8C%E7%B7%A8%EF%BC%9A%E8%99%9E%E6%B0%8F%E6%98%93%E4%BA%8B.djvu"
    # 使用极短文件名,确保路径总长度在限制内
    save_location = os.path.join("C:\\temp", "short_file.djvu")
    download_file(file_url, save_location)

若仍无效,检查工作目录路径是否过长,直接使用更短的根目录(如C:\temp)即可。

2. 启用Windows长路径支持

修改系统设置解除260字符限制:

  • 按下Win+R输入regedit打开注册表编辑器
  • 定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
  • 找到LongPathsEnabled项,将其值改为1(不存在则新建DWORD(32位)值)
  • 重启电脑后生效

3. 改用requests库手动下载(更可控)

如果wget库的临时文件逻辑无法满足需求,改用requests库完全控制下载流程:

import requests

def download_with_requests(url, save_path):
    try:
        with requests.get(url, stream=True) as r:
            r.raise_for_status()
            with open(save_path, 'wb') as f:
                for chunk in r.iter_content(chunk_size=8192):
                    f.write(chunk)
        print("Download complete!")
    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    file_url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/CADAL06210101_%E7%9A%87%E6%B8%85%E7%B6%93%E8%A7%A3%E7%BA%8C%E7%B7%A8%EF%BC%9A%E6%98%93%E5%9C%96%E6%A2%9D%E8%BE%AE%E7%9A%87%E6%B8%85%E7%B6%93%E8%A7%A3%E7%BA%8C%E7%B7%A8%EF%BC%9A%E8%99%9E%E6%B0%8F%E6%98%93%E4%BA%8B.djvu"
    save_location = "C:\\temp\\target.djvu"
    download_with_requests(file_url, save_location)
验证方法

优先测试方案1,给文件指定极短保存路径(如C:\test.djvu),若能正常下载,即可确认是长文件名导致的问题。

内容的提问来源于stack exchange,提问作者Jung Woo Sohn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:20:31