Как получить переменную среды PATH в Python?

156

Когда необходимо объединить несколько каталогов, как в исполняемом пути поиска, существует символ разделителя, зависящий от ОС. Для Windows это ';', для Linux это ':'. Есть ли способ в Python, чтобы получить, какой символ разделить на?

В обсуждениях на этот вопрос Как мне узнать мой путь к Python, используя python? Предлагается os.sepсделать это. Этот ответ неправильный, поскольку он является разделителем для компонентов каталога или имени файла и приравнивается к '\\'или '/'.

Марк Рэнсом
источник

Ответы:

220

os.pathsep

SilentGhost
источник
219
Если, как и я, вы не прочитали текст этого вопроса и просто пошли по названию, вы подумали, что это символ, который разделяет элементы пути к файловой системе (косая черта в Linux и MacOSX, обратная косая черта в Windows). Это не так, это символ, который разделяет элементы оболочки PATH, который используется для поиска исполняемых команд. os.sepили os.path.sepэто то, что вам нужно для путей файловой системы.
Перри
71
os.pathsepесть :или ;пока os.path.sepесть \\ или/ - иногда имена в Python кажутся мне шокирующе неудачными. Это .делает слишком большую разницу.
ArtOfWarfare
1
@Perry я редактировал вопрос. надеюсь, мое редактирование устраняет путаницу (я указал, что этот вопрос задает вопрос о «переменной среды PATH» вместо «пути к файловой системе»).
Тревор Бойд Смит
Так что есть os.sepиos.path.sep , которые равны, а также os.pathsepи os.path.pathsepкоторые также равны. Зачем им это делать?
BallpointBen
12

Делая это немного более явным (для новичков Python, как я)

import os
print(os.pathsep)
Nerrve
источник
4

ОК, так что есть:

  • os.pathsepто есть ;и который является разделителем в PATHпеременной окружения;
  • os.path.sepэто /в Unix / Linux и \в Windows, которая является разделителем между компонентами пути.

Сходство является источником путаницы.

DVV
источник
Ты вообще читал вопрос? os.path.sepэто ответ на другой вопрос.
Марк Рэнсом
Вы правы, спасибо! Моя путаница возникла из-за того, что на самом деле я искал системный разделитель '\' и '/' (то есть os.path.sep), тогда как эта страница была предложена в качестве одного из результатов поиска.
DVV
1

Это пример пути для вашего рабочего каталога / конкретной папки -

 import os
 my = os.path.sep+ "testImages" + os.path.sep + "imageHidden.png"
 print(my)

Выход для Linux-

/home/*******/Desktop/folder/PlayWithPy/src/testImages/imageHidden.png

Выход для Windows-

C:\\Users\\Administrator\\Desktop\\folder\\tests\\testImages\\imageHidden.png

Шивам Бхарадвадж
источник