Jak uzyskać separator zmiennych środowiskowych PATH w Pythonie?

156

Gdy trzeba połączyć wiele katalogów, na przykład w wykonywalnej ścieżce wyszukiwania, występuje separator zależny od systemu operacyjnego. W systemie Windows jest to ';', w przypadku Linuksa to ':'. Czy w Pythonie jest sposób, aby wybrać znak do podziału?

W dyskusjach na to pytanie Jak znaleźć ścieżkę do Pythona za pomocą Pythona? , sugeruje się, że os.septo zrobi. Ta odpowiedź jest nieprawidłowa, ponieważ jest to separator składników katalogu lub nazwy pliku i równa się '\\'lub '/'.

Mark Okup
źródło

Odpowiedzi:

220

os.pathsep

SilentGhost
źródło
219
Jeśli, tak jak ja, nie przeczytałeś treści tego pytania i po prostu przeszedłeś przez tytuł, pomyślisz, że jest to znak, który oddziela elementy ścieżki systemu plików (ukośnik w przód w Linuksie i MacOSX, ukośnik odwrotny w systemie Windows). To nie jest znak, który oddziela elementy powłoki PATH używanej do lokalizowania wykonywalnych poleceń. os.seplub os.path.sepjest tym, czego potrzebujesz do ścieżek systemu plików.
Perry,
71
os.pathsepjest :lub ;while os.path.sepjest \\ lub /- czasami nazwy w Pythonie wydają mi się szokująco źle dobrane. To .zbyt duża różnica.
ArtOfWarfare
1
@Perry Edytowałem pytanie. mam nadzieję, że moja edycja rozwiąże zamieszanie (wskazałem, że to pytanie dotyczy „zmiennej środowiskowej PATH” zamiast „ścieżki do systemu plików”).
Trevor Boyd Smith
Są więc os.sepi os.path.sep, które są równe, a także os.pathsepi os.path.pathsepktóre są również równe. Dlaczego mieliby to zrobić?
BallpointBen
32

To jest os.pathsep

Dave Costa
źródło
12

Robiąc to trochę bardziej jednoznacznie (dla początkujących w Pythonie, takich jak ja)

import os
print(os.pathsep)
Nerrve
źródło
4

OK, więc są:

  • os.pathsepto jest ;i który jest separatorem w PATHzmiennej środowiskowej;
  • os.path.septo jest /w systemach Unix / Linux i \Windows, który jest separatorem między składnikami ścieżki.

Podobieństwo jest źródłem nieporozumień.

DVV
źródło
Czy w ogóle przeczytałeś pytanie? os.path.sepjest odpowiedzią na inne pytanie.
Mark Ransom
Masz rację, dzięki! Moje zamieszanie wynikło z faktu, że tak naprawdę szukałem separatorów specyficznych dla systemu „\” i „/” (czyli os.path.sep), podczas gdy ta strona została zaproponowana jako jeden z wyników wyszukiwania.
DVV
1

To jest przykładowa ścieżka do katalogu roboczego / określonego folderu -

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

Wyjście dla systemu Linux

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

Wyjście dla systemu Windows

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

Shivam Bharadwaj
źródło