Python, füge einen abschließenden Schrägstrich zur Verzeichniszeichenfolge hinzu, os unabhängig

114

Wie kann ich einer Verzeichniszeichenfolge einen abschließenden Schrägstrich ( /für * nix, \für win32) hinzufügen , wenn der Tailing-Schrägstrich noch nicht vorhanden ist? Vielen Dank!

Oh ho
quelle
8
Sie sollten das os.pathModul ( docs.python.org/library/os.path.html ) verwenden, anstatt Zeichenfolgen direkt zu bearbeiten . Verwenden Sie os.path.joindiese Option, um Pfadkomponenten zu verketten.
Kennytm
2
danke Tim für die Erinnerung, nachdem ich das Dokument gelesen habe, denke ich, dass die Antwort auf meine eigentliche Frage os.path.join (Ordner, Dateiname) ist und ich mich überhaupt nicht um den Schrägstrich kümmern muss. Mann, ich werde Python lieben
;-)
2
Deshalb habe ich gefragt - mach das nicht selbst, benutze os.path.joinund lass die Standardbibliothek das richtige Pfadtrennzeichen herausfinden.
Tim Pietzcker
2
@ S.Lott Ich werde das nicht als 'schlecht' betrachten. Die Frage ist eine gültige Frage für sich. Es ist nur ein Teil einer größeren (man kann sagen echten) Frage.
Ohho
6
Je nachdem, was Sie tun, kann die Frage jedoch weiterhin von Interesse sein. Wenn Sie beispielsweise Python verwenden, um Eingaben für ein anderes Programm bereitzustellen, kann es vorkommen, dass ein Argument einen Pfad mit Schrägstrich benötigt. Das kann außerhalb Ihrer Kontrolle liegen; und ist ein vollkommen gültiger Anwendungsfall für Marcos Antwort unten.
Chris Krycho

Antworten:

180

os.path.join(path, '') fügt den abschließenden Schrägstrich hinzu, wenn er noch nicht vorhanden ist.

Sie können os.path.join(path, '', '')oder os.path.join(path_with_a_trailing_slash, '')und Sie erhalten immer noch nur einen abschließenden Schrägstrich.

Steven T. Snyder
quelle
2
Fügt auch einen Schrägstrich hinzu, wenn pathes sich eher um eine Datei als um ein Verzeichnis handelt. Das ist etwas unpraktisch.
Martin
27

Verwenden Sie, da Sie ein Verzeichnis und einen Dateinamen verbinden möchten

os.path.join(directory, filename)

Wenn Sie .\..\..\blah\Pfade entfernen möchten , verwenden Sie

os.path.join(os.path.normpath(directory), filename)
Tim Pietzcker
quelle
11

Sie können dies manuell tun, indem Sie:

path = ...

import os
if not path.endswith(os.path.sep):
    path += os.path.sep

Es ist jedoch normalerweise viel sauberer zu verwenden os.path.join.

Max Shawabkeh
quelle
-1

Sie könnten so etwas verwenden:

os.path.normcase(path)
    Normalize the case of a pathname. On Unix and Mac OS X, this returns the path unchanged; on case-insensitive filesystems, it converts the path to lowercase. On Windows, it also converts forward slashes to backward slashes.

Andernfalls könnten Sie auf dieser Seite nach etwas anderem suchen

Bloeper
quelle