Wie erhalte ich das PATH-Trennzeichen für Umgebungsvariablen in Python?

156

Wenn mehrere Verzeichnisse wie in einem ausführbaren Suchpfad verkettet werden müssen, gibt es ein os-abhängiges Trennzeichen. Für Windows ist es ';', für Linux ist es ':'. Gibt es in Python eine Möglichkeit, den zu teilenden Charakter zu ermitteln?

In den Diskussionen zu dieser Frage Wie finde ich meinen Python-Pfad mithilfe von Python heraus? , es wird vorgeschlagen, dass os.sepes tun wird. Diese Antwort ist falsch, da sie das Trennzeichen für Komponenten eines Verzeichnisses oder Dateinamens ist und '\\'oder entspricht '/'.

Mark Ransom
quelle

Antworten:

220

os.pathsep

SilentGhost
quelle
219
Wenn Sie wie ich den Text dieser Frage nicht gelesen haben und nur den Titel gelesen haben, denken Sie, dass dies das Zeichen ist, das Elemente eines Dateisystempfads trennt (Schrägstrich unter Linux und MacOSX, Schrägstrich unter Windows). Es ist nicht das Zeichen, das Elemente eines Shell- Pfads trennt , mit dem ausführbare Befehle gefunden werden. os.sepoder os.path.sepist das, was Sie für Dateisystempfade benötigen.
Perry
71
os.pathsepist :oder ;während os.path.sepist \\ oder /- manchmal scheinen mir die Namen in Python schockierend schlecht gewählt zu sein. Das .macht einen viel zu großen Unterschied.
ArtOfWarfare
1
@Perry Ich habe die Frage bearbeitet. hoffentlich klärt meine Bearbeitung die Verwirrung auf (ich habe angegeben, dass diese Frage nach der "Umgebungsvariablen PATH" anstelle eines "Dateisystempfads" fragt).
Trevor Boyd Smith
Es gibt also os.sepund os.path.sep, die gleich sind, sowie os.pathsepund os.path.pathsepdie auch gleich sind. Warum sollten sie das tun?
BallpointBen
32

Es ist os.pathsep

Dave Costa
quelle
12

Machen Sie es etwas expliziter (Für Python-Neulinge wie mich)

import os
print(os.pathsep)
Nerrve
quelle
4

OK, es gibt also:

  • os.pathsepdas ist ;und was ein Trennzeichen in der PATHUmgebungsvariablen ist;
  • os.path.sepDas ist /unter Unix / Linux und \unter Windows, das ein Trennzeichen zwischen Pfadkomponenten ist.

Die Ähnlichkeit ist eine Quelle der Verwirrung.

DVV
quelle
Hast du die Frage überhaupt gelesen? os.path.sepist die Antwort auf eine andere Frage.
Mark Ransom
Du hast recht, danke! Meine Verwirrung ergab sich aus der Tatsache, dass ich tatsächlich nach dem systemspezifischen Trennzeichen '\' und '/' (os.path.sep) gesucht habe, während diese Seite als eines der Suchergebnisse vorgeschlagen wurde.
DVV
1

Dies ist ein Beispielpfad für Ihr Arbeitsverzeichnis / einen bestimmten Ordner.

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

Ausgabe für Linux-

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

Ausgabe für Windows-

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

Shivam Bharadwaj
quelle