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

Windows系统下Python获取桌面路径的最可靠方法是什么?

获取桌面路径的可靠方案

之前靠拼接固定字符串(比如~/Desktop或USERPROFILE加Desktop)的方法,遇到自定义桌面路径(比如OneDrive同步的C:\Users\NAME\OneDrive\Desktop)或非英文系统时必然失效,枚举路径列表也不是长久之计。以下是两种最可靠的解决方法:

Windows平台原生实现(无需第三方库)

Windows系统的桌面路径存储在系统API中,直接调用SHGetKnownFolderPath API能精准获取当前用户的实际桌面路径,不管是OneDrive同步的还是非英文命名的都能正确识别:

import ctypes
from ctypes import wintypes

# 调用Windows系统API SHGetKnownFolderPath
SHGetKnownFolderPath = ctypes.windll.shell32.SHGetKnownFolderPath
SHGetKnownFolderPath.argtypes = [ctypes.c_char_p, wintypes.DWORD, wintypes.HANDLE, ctypes.POINTER(ctypes.c_wchar_p)]

def get_desktop_path():
    # FOLDERID_Desktop对应的GUID值
    FOLDERID_Desktop = b'\x0a\x5b\x8f\x14\x2a\x90\x48\x63\x9d\x48\x78\x41\xb7\xc9\x51\x60'
    path_ptr = ctypes.c_wchar_p()
    # 调用API获取路径
    result = SHGetKnownFolderPath(FOLDERID_Desktop, 0, None, ctypes.byref(path_ptr))
    if result == 0:
        path = path_ptr.value
        # 释放内存
        ctypes.windll.ole32.CoTaskMemFree(path_ptr)
        return path
    else:
        raise Exception(f"获取桌面路径失败,错误码: {result}")

# 使用示例
desktop = get_desktop_path()
print(desktop)

跨平台通用方案(依赖第三方库)

如果需要兼容Windows、macOS、Linux多平台,可以使用专门处理系统目录的appdirs库,它会自动适配不同系统的路径规则:

  1. 先安装库:
pip install appdirs
  1. 调用代码:
import appdirs

# 直接获取桌面路径
desktop = appdirs.user_dir("desktop")
print(desktop)

核心原因:系统的桌面路径是可自定义的(包括OneDrive自动同步修改、非英文系统的本地化命名),只有通过系统提供的标准API或成熟的第三方库,才能动态获取到真实有效的路径,避免硬编码带来的适配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:50:51