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

Python如何不硬编码用户名实现从网站下载文件到任意电脑桌面

问题根因

  • Python原生的open()函数不会自动解析Windows的环境变量占位符%userprofile%,因此你写的路径会被识别为字面字符串,系统找不到对应目录
  • 你传入的路径仅指向桌面文件夹,没有指定具体保存的文件名,写入操作无法直接作用于文件夹

解决方案

方法1:使用os模块解析环境变量(兼容所有Python3版本)

首先导入os模块,通过os.environ读取系统环境变量,拼接完整的文件保存路径:

import os
import requests

if download_choice == "14":
    print("Downloading test file to Desktop...")
    myfile14 = requests.get(url14)
    # 读取用户目录环境变量,拼接桌面路径+保存文件名
    desktop_path = os.path.join(os.environ["USERPROFILE"], "Desktop")
    # 自定义保存的文件名,可根据需求修改
    save_path = os.path.join(desktop_path, "test_download.file")
    with open(save_path, 'wb') as f:
        f.write(myfile14.content)

这里用with语句管理文件句柄是更规范的写法,能避免文件资源泄漏的问题

方法2:使用pathlib模块(推荐,Python3.4+支持)

pathlib是Python3推出的面向对象路径处理模块,写法更简洁不易出错:

from pathlib import Path
import requests

if download_choice == "14":
    print("Downloading test file to Desktop...")
    myfile14 = requests.get(url14)
    # 直接拼接桌面路径和文件名
    save_path = Path.home() / "Desktop" / "test_download.file"
    with open(save_path, 'wb') as f:
        f.write(myfile14.content)

额外优化建议

  • 可以在写入前加一行myfile14.raise_for_status(),判断请求是否成功,避免下载到错误的响应内容写入文件
  • 如果需要兼容桌面路径被用户手动修改的场景,可以通过读取Windows注册表获取桌面实际路径,常规使用场景下上述方法已经能覆盖99%以上的Windows设备

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:09:01