跨平台桌面目录路径?

18 投票
2 回答
18882 浏览
提问于 2025-04-17 02:12

有没有办法在Python中以一种跨平台的方式获取桌面目录路径,最好只使用标准模块呢?

我现在在Mac OS X和Windows上的解决方案是先检查哪个系统在运行Python,方法是使用sys.platform,然后进行以下操作:

  • 在Mac OS X上,可以用os.path.join(os.path.expanduser('~'), 'Desktop')来处理。
  • Windows上,可以使用非标准模块win32com,或者依赖ctypes的模块winpaths;有没有标准的替代方案呢?
  • 那Linux呢?

我希望能找到一个在Mac OS X、Windows和Linux上都能用的解决方案。

2 个回答

20

我使用了以下内容:

import os
desktop_file = os.path.expanduser("~/Desktop/myfile.txt")

在Unix和Windows系统上,这个功能会把以~或~user开头的路径,替换成那个用户的主目录。

参考资料:os.path.expanduser

16

在Windows系统中,用户的主目录是%HOMEPATH%,这个和Linux和Mac中的~是一样的。在这个主目录下,有一个Desktop文件夹,就像Mac上一样。Python会自动把~转换成%HOMEPATH%,所以你在Mac上用的命令在Windows上也能直接用。

在Linux上就稍微复杂一点。首先要明白,你用的Linux系统可能根本没有桌面环境,所以就没有用户的桌面文件夹。如果你有窗口管理器,它可能会遵循~\Desktop的结构,也可能不会。关于窗口管理器的更多信息,可以参考维基百科的相关页面,里面有更详细的介绍,还比较了几种流行的X窗口管理器。

最好的办法是先想想,我为什么需要用户的桌面文件夹?是为了在安装时创建一个快捷方式吗?如果是这样,使用像nsis这样的安装工具来处理这些细节可能更好。如果是为了存储文件,即使是临时的,你可能需要重新考虑你的设计。或者你是在找某个东西,这种情况下,进行文件系统搜索可能比单独检查一个文件夹要好。

像很多事情一样,这一切都取决于你想要实现什么。

正如EOL在评论中提到的,Windows的情况比看起来要复杂一点。他提供的关于Windows桌面文件夹的链接中有更多关于桌面文件夹本地化的细节。这对开发国际应用程序的人来说非常重要,需要考虑使用工具集中的自动本地化功能,或者避免使用那些功能。

撰写回答