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

无法写入Users Downloads文件夹:FileNotFoundError问题排查求助

问题描述

背景

我尝试将输出文件写入网络驱动器目录,同时也需要写入用户的Downloads文件夹,但在此过程中遇到了问题...

代码示例

我通过以下方式尝试访问用户的Downloads文件夹以实现预期输出:

downloads_folder_file = str(f'C:\\Users\\{os.getlogin()}\\Downloads\\Output_File_.xlsx')

问题现象

当代码尝试写入时,出现如下错误:

FileNotFoundError: [WinError 2] The system cannot find the file specified: 'C:\\Users\\WILLIA~1.FOR\\AppData\\Local\\Temp\\39\\openpyxl.a_ys6_1g'

我清楚FileNotFoundError的含义,但不明白为何无法访问Downloads文件夹——我可以通过File Explorer正常访问C:\Users\username\Downloads。

已尝试操作

  • 打印downloads_folder_file时,能正确返回C:\Users\username\Downloads\。

请问我是否存在明显的操作错误?


解答

首先要明确:错误提示指向的是临时目录中的openpyxl临时文件,并非你指定的Downloads文件夹本身。

问题排查与解决建议:

  1. 检查临时目录状态
    错误里的C:\\Users\\WILLIA~1.FOR\\AppData\\Local\\Temp\\39这个临时子目录可能被误删、权限不足,或者系统无法自动生成。可以手动导航到该路径确认是否存在,若不存在则手动创建,或重启程序让系统重新初始化临时目录。

  2. 替换硬编码的Downloads路径
    你当前用C:\\Users\\{os.getlogin()}\\Downloads获取路径的方式存在隐患——Windows的Downloads路径可能因OneDrive同步、系统配置变更而改变(比如同步后路径会变成C:\Users\username\OneDrive\Downloads)。建议用标准API获取正确路径:

    # 使用Windows API获取官方Downloads路径
    from win32com.shell import shell, shellcon
    downloads_folder = shell.SHGetFolderPath(0, shellcon.CSIDL_DOWNLOADS, None, 0)
    downloads_folder_file = f"{downloads_folder}\\Output_File_.xlsx"
    

    若不想依赖第三方库,也可以用pathlib的更稳妥写法:

    from pathlib import Path
    downloads_folder = Path.home() / "Downloads"
    downloads_folder_file = str(downloads_folder / "Output_File_.xlsx")
    
  3. 排查openpyxl的写入问题
    错误和openpyxl的临时文件生成有关,可尝试:

    • 更新openpyxl到最新版本,修复已知的临时文件处理bug
    • 先在本地可写的目录(比如当前程序运行目录)创建文件,再复制到Downloads文件夹
    • 检查程序运行的用户权限:如果是用管理员身份启动,临时目录路径可能和普通用户不同,导致权限冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:23:11