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 '/'.

Odpowiedzi:


220

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


12

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

import os
print(os.pathsep)

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ń.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.