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

Antworten:


220

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


12

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

import os
print(os.pathsep)

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.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.