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.