Wie kann ich einen abschließenden Schrägstrich ( /
für *nix, \
für win32) zu einer Verzeichniszeichenkette, wenn der abschließende Schrägstrich nicht bereits vorhanden ist? Danke!
Antworten
Zu viele Anzeigen?
Tim Pietzcker
Punkte
311448
Max Shawabkeh
Punkte
36359
Sie können dies manuell tun:
path = ...
import os
if not path.endswith(os.path.sep):
path += os.path.sep
In der Regel ist es jedoch viel sauberer, wenn Sie os.path.join
.
Bloeper
Punkte
347
Sie könnten etwa so vorgehen:
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.
Sonst könnten Sie etwas anderes suchen auf este Seite
0 Stimmen
Was wollen Sie damit machen?
9 Stimmen
Sie sollten die
os.path
Modul ( docs.python.org/library/os.path.html ), anstatt Strings direkt zu manipulieren. verwendenos.path.join
zur Verkettung von Pfadkomponenten.0 Stimmen
@Tim Pietzcker, damit ich sicher sein kann, dass ein Schrägstrich vorhanden ist, wenn ich die Ordnerzeichenfolge mit einem Dateinamen verknüpfe
2 Stimmen
Danke Tim für den Hinweis, nachdem ich das Dokument gelesen habe, denke ich, dass die Antwort auf meine real Die Frage ist os.path.join(folder, filename) und ich muss mir keine Gedanken über den Slash machen. Mann, ich werde Python lieben ;-)
2 Stimmen
Deshalb habe ich gefragt: Machen Sie das nicht selbst, sondern benutzen Sie
os.path.join
und lassen Sie die Standardbibliothek das korrekte Pfad-Trennzeichen herausfinden.1 Stimmen
-1: Eine schlechte Frage. Die eigentliche Frage lautet: "Wie kann ich Dateinamen verketten?"
2 Stimmen
@S.Lott Ich würde das nicht als "schlecht" bezeichnen. Die Frage ist an sich eine berechtigte Frage. Sie ist nur ein Teil einer größeren (man könnte sagen: echten) Frage.
8 Stimmen
Je nachdem, was Sie tun, kann die Frage aber dennoch von Interesse sein. Wenn Sie zum Beispiel Python verwenden, um einem anderen Programm Eingaben zu liefern, kann es vorkommen, dass ein Argument einen Pfad mit Schrägstrich benötigt. Das kann sich Ihrer Kontrolle entziehen und ist ein durchaus zulässiger Anwendungsfall für Marcos Antwort unten.
1 Stimmen
Ich denke, die Frage ist in ihrer jetzigen Form gut. Ich bin hier gelandet, weil ich herausfinden wollte, wie man ein "/" an das Ende einer Anweisung setzt, die
os.path.abspath
, wodurch der Schrägstrich entfernt wird. Zusammengefasst:os.path.abspath(os.path.join(folder, ''))
keinen abschließenden Schrägstrich hat, währendos.path.join(os.path.abspath(folder), '')
tut.2 Stimmen
Diese Frage ist berechtigt, denn der anerkannte Weg, ein einstufiges Verzeichnis zu identifizieren
foo/
statt einer Dateifoo
ist die Verwendung eines abschließenden /. Daher gibt es Fälle, in denen Sie einen Pfad mit mehreren Verzeichnissen mitos.path.join
aber achten Sie darauf, dass das Ergebnis mit einem / endet, um die Konvention zu wahren. Andernfalls gibt es keine Möglichkeit, einen Pfad zu disambiguierenfoo
(ist das ein Verzeichnis oder ein Dateiname?os.path.dirname
wird Ihnen sagen, dass es sich um eine Datei handelt, aber Sie könnten es als Verzeichnisnamen verwenden), es sei denn, das Dateisystem existiert bereits (und das ist nicht sicher).