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

如何在Windows10/11上用Python获取多语言环境下的Downloads文件夹路径?

获取Windows多语言环境下的Downloads文件夹路径

要适配Windows多语言版本的Downloads文件夹路径,不能直接拼接"Downloads"字符串,必须通过系统API获取对应语言的实际路径,以下是几种可靠方案:

方案一:使用pywin32库(需安装)

该方案调用Windows原生Shell API,兼容性好且代码简洁:

  1. 先安装依赖:
pip install pywin32
  1. 代码实现:
import win32com.shell.shell as shell

# CSIDL_DOWNLOADS 对应系统下载文件夹的标识
downloads_path = shell.SHGetFolderPath(0, shell.CSIDL_DOWNLOADS, None, 0)
print(downloads_path)

方案二:使用ctypes(无需额外依赖)

如果不想安装第三方库,可直接用ctypes调用Windows API,无需额外安装包:

import ctypes
from ctypes import wintypes

# 调用SHGetKnownFolderPath API
SHGetKnownFolderPath = ctypes.windll.shell32.SHGetKnownFolderPath
SHGetKnownFolderPath.argtypes = [
    wintypes.LPCWSTR, wintypes.DWORD, wintypes.HANDLE, ctypes.POINTER(wintypes.LPWSTR)
]

# 下载文件夹的唯一标识ID
FOLDERID_Downloads = "{374DE290-123F-4565-9164-39C4925E467B}"

path_ptr = wintypes.LPWSTR()
# 调用API获取路径
result = SHGetKnownFolderPath(FOLDERID_Downloads, 0, None, ctypes.byref(path_ptr))

if result == 0:
    downloads_path = path_ptr.value
    # 释放内存
    ctypes.windll.kernel32.LocalFree(path_ptr)
    print(downloads_path)
else:
    raise RuntimeError(f"获取下载文件夹路径失败,错误码: {result}")

为什么硬编码"Downloads"不可行?

Windows的用户文件夹名称会随系统语言本地化,比如波兰语中Downloads对应"Pobrane"、法语对应"Téléchargements",直接拼接固定字符串会导致路径错误,必须通过系统提供的API获取本地化后的实际路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:27:19