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库,它会自动适配不同系统的路径规则:
- 先安装库:
pip install appdirs
- 调用代码:
import appdirs # 直接获取桌面路径 desktop = appdirs.user_dir("desktop") print(desktop)
核心原因:系统的桌面路径是可自定义的(包括OneDrive自动同步修改、非英文系统的本地化命名),只有通过系统提供的标准API或成熟的第三方库,才能动态获取到真实有效的路径,避免硬编码带来的适配问题。
内容的提问来源于stack exchange,提问作者Electron X
相关产品推荐
相关产品推荐

