Ist os.path.join notwendig?

8

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.

>     
semicolon 06.06.2014, 01:16
quelle

2 Antworten

13

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; -)

    
Tim Peters 06.06.2014, 01:34
quelle
4

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.

    
Mark Ransom 06.06.2014 01:21
quelle

Tags und Links