Cross-platform Desktop directory path?

Eric O Lebigot picture Eric O Lebigot · Sep 13, 2011 · Viewed 17.2k times · Source

Is there a way of obtaining the Desktop directory path in a cross-platform way, ideally only using standard modules, in Python?

My current Mac OS X + Windows solution is to check which system is running Python with sys.platform and then do the following:

  • Mac OS X can be handled with os.path.join(os.path.expanduser('~'), 'Desktop').
  • Windows can use the non-standard module win32com, or the ctypes-dependent module winpaths; is there a standard alternative?
  • And what about Linux?

I would be happy with a solution that works on Mac OS X, Windows and Linux.

Answer

funerr picture funerr · Oct 6, 2013

I used the following:

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

On Unix and Windows, return the argument with an initial component of ~ or ~user replaced by that user‘s home directory.

Reference: os.path.expanduser