Путь к каталогу кроссплатформенного рабочего стола? - PullRequest
15 голосов
/ 13 сентября 2011

Есть ли способ получить путь к каталогу Desktop кроссплатформенным способом , в идеале только с использованием стандартных модулей, в 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 ]

18 голосов
/ 06 октября 2013

Я использовал следующее:

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

В Unix и Windows верните аргумент с начальным компонентом ~ или ~ user, замененным домашним каталогом этого пользователя.

Ссылка: os.path. Расширитель

16 голосов
/ 13 сентября 2011

Под окнами дом пользователей - %HOMEPATH%, что эквивалентно Linux и Mac ~.Под ним находится папка Desktop, как на Mac.Python автоматически конвертирует ~ в% HOMEPATH% в Windows, поэтому ваша команда Mac будет работать "из коробки" на Mac и Windows.

В Linux это немного сложнее.Во-первых, поймите, что у Linux, на котором вы работаете, может не быть рабочего стола , поэтому папка рабочего стола пользователя отсутствует.Если у вас есть оконный менеджер, он может следовать или не следовать парадигме ~\Desktop. Запись в википедии об оконных менеджерах содержит гораздо более подробные сведения, включая сравнение между несколькими из наиболее популярных оконных менеджеров в некоторых из подссылок.

Лучше всего сделать шаг назад и спросить себя Зачем мне нужна / нужна папка рабочего стола пользователя? Это создать ярлык во время установки?Скорее всего, вам лучше использовать утилиту записи установщика, такую ​​как nsis , которая обрабатывает эти детали.Если это для хранения файлов, даже временно, вы можете пересмотреть свой дизайн.Или вы ищете что-то, и в этом случае поиск по файловой системе может оказаться подходящим способом, вместо хрупкой проверки одной папки.

Как и большинство вещей, все зависит от того, чего вы хотите достичь.

Как отметил EOL в своем комментарии, Windows немного хитрее, чем кажется на первый взгляд. Его ссылка на более полную статью о папке Windows Desktop содержит более подробную информацию о локализации папки рабочего стола.Это очень важно учитывать разработчикам международных приложений: либо использовать автоматическую локализацию, встроенную в их набор инструментов, либо избегать вещей, которые ее используют.

...