跨平台桌面目录路径?

时间:2011-09-13 14:53:32

标签: python path directory cross-platform desktop

有没有办法以跨平台方式获取桌面目录路径,理想情况下只能在Python中使用标准模块?

我目前的Mac OS X + Windows解决方案是使用sys.platform检查哪个系统正在运行Python,然后执行以下操作:

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

我很满意适用于Mac OS X,Windows和Linux的解决方案。

2 个答案:

答案 0 :(得分:18)

我使用了以下内容:

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

在Unix和Windows上,返回带有初始组件的参数   〜或〜用户替换为该用户的主目录。

参考:os.path。expanduser

答案 1 :(得分:16)

在Windows下方,用户主页为%HOMEPATH%,相当于linux和Mac ~。在此下方,有一个文件夹Desktop就像在Mac上一样。 Python会在Windows上自动将~转换为%HOMEPATH%,因此您的Mac命令将在Mac和Windows上开箱即用。

在Linux上,它有点棘手。首先,要了解您运行的Linux机箱可能没有桌面,因此没有用户桌面文件夹。如果你有窗口管理器,它可能会也可能不会遵循~\Desktop范例。 The wikipedia entry on window managers更详细,包括一些子链接中几个更流行的X窗口管理器之间的比较。

您最好的选择是退后一步,并问自己为什么我需要/需要用户桌​​面文件夹?是否在安装过程中创建快捷方式?使用安装编写器实用程序(例如nsis)处理这些详细信息可能会更好。如果是文件存储,甚至是临时存储,您可能需要重新考虑您的设计。或者您正在寻找什么,在这种情况下,文件系统搜索可能是要走的路,而不是脆弱的单个文件夹检查。

与大多数事情一样,这完全取决于你想要完成的事情。

正如EOL在他的评论中指出的那样,Windows比首次出现时略显棘手。 His link to a more complete article on the Windows Desktop文件夹提供了有关桌面文件夹本地化的更多详细信息。这对于国际应用程序的构建者来说非常重要,要么考虑使用内置于其工具集中的自动本地化,要么避免使用它的内容。