Python 获取 Windows 桌面路径的 5 种方法详解
本文总结了在 Python 中获取 Windows 桌面绝对路径的五种常用方法。包括使用内置 winreg 模块读取注册表、利用 win32api 扩展库、通过 win32com.shell 获取特殊文件夹位置、使用 os.path.join 拼接用户目录,以及基于 socket 主机名的路径推导。文章对比了各方法的优缺点、依赖要求及在用户修改桌面位置或主机名后的兼容性,为开发者提供不同场景下的最佳实践参考。
获取 Windows 桌面路径的方法概述
本文汇总了五种在 Python 中获取 Windows 系统桌面路径的方法。明确获取该路径的主要用途在于,当程序生成文档或日志文件时,将其直接输出至桌面,便于用户快速查看和编辑。
前两种方法均通过读取 Windows 注册表来获取当前桌面的绝对路径。其中,第一种方法因无需安装任何第三方扩展库而更为推荐;其他方法供读者了解备用。
基于注册表的获取方法
1. 使用内置的 winreg 模块(推荐方案)
import _winreg
def get_desktop():
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
return _winreg.QueryValueEx(key, "Desktop")[0]
使用 win32api 扩展库
2. 使用 win32api 扩展库(需安装第三方库)
import win32api,win32con
def get_desktop():
key =win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders',0,win32con.KEY_READ)
return win32api.RegQueryValueEx(key,'Desktop')[0]
使用 win32com.shell 扩展库
3. 使用 win32com.shell 扩展库(需安装第三方库)
from win32com.shell import shell, shellcon
def GetDesktopPath():
ilist =shell.SHGetSpecialFolderLocation(0, shellcon.CSIDL_DESKTOP)
return shell.SHGetPathFromIDList(ilist)
基于 os.path 的路径拼接方法
4. 使用 Python 内置 os 库的 path 模块
需要注意的是,当用户手动更改了桌面的保存位置后,此方法可能无法正确获取路径。
import os
def GetDesktopPath():
return os.path.join(os.path.expanduser("~"), 'Desktop')
基于 socket 主机名的路径推导
5. 使用 socket 模块(不推荐)
该方法实际上是获取当前计算机的主机名。通常情况下,Windows 系统在首次启动时会生成一个默认主机名,该名称会出现在 C 盘的用户目录下。例如,若主机名为 'jayzhen',则用户目录路径为 C:\Users\jayzhen,此时桌面路径即为 C:\Users\jayzhen\Desktop。然而,如果用户后续修改了主机名,此方法将失效。其代码逻辑与第四种方法相似,但依赖主机名推导路径。
import socket, os
def GetDesktopPath()
hostname = socket.gethostname() #socket.getfqdn(socket.gethostname())
basepath = os.path.join("C:\Users\",hostname )
return os.path.join(basepath, 'Desktop')
以上关于 Python 获取 Windows 桌面路径的五种方法小结完毕,希望能为开发者提供有价值的参考。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













