Seite 1 von 1
os.path.join
Verfasst: Mittwoch 16. September 2009, 22:01
von jbs
Die Funktion liefert unter Windows ja ``\`` statt ``/``. Kann man dieses verhalten steuern, sodass ich immer ``/`` erhalte?
Ich finde
irgendwie unschön.
Verfasst: Mittwoch 16. September 2009, 22:14
von cofi
Dann kannst du auch einfach ``/`` als Trenner nehmen -> ``"/".join(path1, path2)``
Aber warum willst du ueberhaupt dieses Verhalten?
Verfasst: Mittwoch 16. September 2009, 22:38
von jbs
Ich war dabei für Bottle eine Art kleinen Filebrowser zu schreiben. Für das Zusammensetzen vom Pfad hatte ich ``os.path.join`` verwendet. Bottle mag aber keine ``\`` in den URL und deshalb hatte ich es bisher mit replace in ``/`` gewandelt.
Verfasst: Mittwoch 16. September 2009, 22:54
von Leonidas
Man kann wohl auch unter Windows ``posixpath`` importieren, ebenso wie man unter Unix auch ``ntpath`` importieren kann.
Verfasst: Mittwoch 16. September 2009, 22:57
von cofi
Und warum benutzt du ueberhaupt ``os.path.join`` wenn es um URL geht? Das sind nunmal Slashes und das plattform-unabhaengig.
Verfasst: Mittwoch 16. September 2009, 23:04
von jbs
weil os.path.join mehr macht als ``'/'.join`` und mir das halt bekannt war für das Zusammensetzen von Pfaden
Verfasst: Mittwoch 16. September 2009, 23:13
von cofi
jbs hat geschrieben:weil os.path.join mehr macht als ``'/'.join``
Code: Alles auswählen
def join(a, *p):
"""Join two or more pathname components, inserting '/' as needed.
If any component is an absolute path, all previous path components
will be discarded."""
path = a
for b in p:
if b.startswith('/'):
path = b
elif path == '' or path.endswith('/'):
path += b
else:
path += '/' + b
return path
Das ist der Code von ``posixpath.join`` der von ``ntpath.join`` enthaelt nur noch eine ueberpruefung des Laufwerkbuchstabens.
Das tut nicht viel mehr als das join. Es sei denn natuerlich du willst mit absoluten Pfaden jonglieren
Verfasst: Mittwoch 16. September 2009, 23:22
von Hyperion
jbs hat geschrieben:weil os.path.join mehr macht als ``'/'.join`` und mir das halt bekannt war für das Zusammensetzen von Pfaden
Es gibt ja auch urlparse.urljoin()

Verfasst: Mittwoch 16. September 2009, 23:34
von Defnull
jbs hat geschrieben:Bottle mag aber keine ``\`` in den URL und deshalb hatte ich es bisher mit replace in ``/`` gewandelt.
Mag an der Urzeit liegen, aber warum mag Bottle kein '\' in URLs? Bottle ist der Inhalt einer URL eigentlich ziemlich egal. Die einzige Besonderheit, die mir ein fällt, ist, das einfache Platzhalter von einem '/' terminiert werden, aber nicht von einem '\'. Das kann man aber recht einfach mit regexp-Platzhaltern lösen: r':platzhalter:^[\\/]+:'
Verfasst: Donnerstag 17. September 2009, 08:14
von jbs
schande über mich.
ich hab jetzt ``'/'.join`` genommen