Zur Zeit verwende ich os.path.join
fast immer in meinem Django-Projekt für die Unterstützung von Cross-OS; Die einzigen Stellen, an denen ich sie derzeit nicht verwende, sind Vorlagennamen und URLs. In Situationen, in denen ich den Pfad '/path/to/some/file.ext'
möchte, verwende ich os.path.join('path', 'to', 'some', 'file.ext')
.
Allerdings habe ich gerade mein Projekt unter Windows getestet, um zu sehen, ob das gut funktionierte / notwendig war und es scheint, dass Windows '/'
oder '\'
(oder '\'
bei der Arbeit außerhalb von Python) und alle UNIX-Versionen akzeptiert Alle Systeme verwenden '/'
Es scheint keinen Grund zu geben, jemals '\'
zu verwenden. In diesem Fall ist es notwendig, os.path.join
überall zu verwenden?
Gibt es eine Situation, in der das Hinzufügen von '/'
oder die Verwendung von posixpath
Probleme auf bestimmten Betriebssystemen verursacht (nicht einschließlich XP oder niedriger, da sie nicht mehr offiziell unterstützt werden)? Wenn nicht, denke ich, dass ich einfach posixpath
verwenden oder ein '/'
hinzufügen werde, um Variablen mit anderen Variablen oder Variablen mit Strings zu verbinden und keine String-Pfade zu trennen (also als '/path/to/some/file.ext'
), es sei denn, es gibt einen anderen Grund für mich mach das nicht anders als es Dinge zu brechen.
Um zu vermeiden, dass dies als primär-meinungsbezogen abgeschlossen wird, möchte ich klarstellen, dass meine spezifische Frage ist, ob die Verwendung von os.path.join
niemals dazu führt, dass ein Python-Programm nicht wie vorgesehen auf einem unterstützten Betriebssystem funktioniert.
Der Microsoft Windows-API ist es egal, ob Sie /
oder \
verwenden, daher ist es normal, sie als Trennzeichen unter Windows zu verwenden. Befehle in der Befehlszeile ("DOS-Box" - command.com
oder cmd.exe
) erfordern jedoch in der Regel \
in Pfaden ( /
wird verwendet, um Befehlsoptionen in diesen nativen Windows-Shells zu kennzeichnen). Wenn Sie beispielsweise eine Befehlszeile in Python erstellen und eine Shell zum Ausführen des Befehls auslösen, müssen Sie in der Regel das Trennzeichen \
für Windows verwenden.
Ein anderer Fall ist in Lib/macpath.py
enthalten: da sep
auf :
(ein Doppelpunkt) gesetzt ist, um ältere Macintosh-Systeme zu versorgen. Ich glaube, das ist das einzige System, auf dem Python jemals ausgeführt hat, das /
nicht als Trennzeichen akzeptiert.
EDIT: hier für eine lange Liste von Windows-Namensregeln. Tadeln Sie mich nicht; -)
Wenn Sie einem Benutzer aus irgendeinem Grund einen Dateinamen präsentieren, ist es besser, wenn dieser Dateiname den üblichen OS-Konventionen entspricht.
Windows konnte das /
für Pfadtrennzeichen verwenden, solange es Pfade gab - das war eine DOS-Funktion.