Seite 1 von 1
os.path.expanduser Doppelter Slash in Windows
Verfasst: Donnerstag 4. Oktober 2018, 12:38
von Pyranha83
Hallo,
Leider konnte ich weder im Forum noch im Netz etwas zu diesem Problem finden.
Mein Benutzer-Verzeichnis unter Windows 10 liegt unter C:\Users\USER
Die Funktion so.path.expanduser("~") liefert mysteriöser Weise
C:\\Users\\USER
Zurück und so kann das Verzeichnis natürlich nicht gefunden werden.
Hat jemand schon einmal ein Ähnliches Problem gehabt und weiß wie ich den richtigen Pfad extrahieren kann?
Re: os.path.expanduser Doppelter Slash in Windows
Verfasst: Donnerstag 4. Oktober 2018, 13:04
von __deets__
Das ist doch der richtige Pfad. Da sind halt doppelte slashes, weil backslash der escape-Character ist:
Insofern ist das erstmal korrekt.
Re: os.path.expanduser Doppelter Slash in Windows
Verfasst: Donnerstag 4. Oktober 2018, 13:22
von Pyranha83
Über Print kommt das richtige, ist auch nicht das Problem
Problem ist das bei Return in einer Funktion trotzdem beide slashes ausgegeben werden und die Funktion damit den falschen Pfad generiert
Re: os.path.expanduser Doppelter Slash in Windows
Verfasst: Donnerstag 4. Oktober 2018, 13:24
von Pyranha83
Das kann doch nicht sein das Print und Return unterschiedliche Ergebnisse liefern.
Hast du eine Idee wie ich das Problem lösen kann?
Re: os.path.expanduser Doppelter Slash in Windows
Verfasst: Donnerstag 4. Oktober 2018, 13:37
von __deets__
Du hast kein Problem. Du denkst nur du hast eines. Return liefert kein anderes Ergebnis. Alles, was da passiert, ist, dass dir die Repraesentation des Strings angezeigt wird. Kannst du emulieren mit print(repr(derstring)). Das ist ein Feature von Python, mit dem man die Ausgabe von Objekten einfach kopieren und wieder zu den Objekten machen kann. Genauso, wie eine Liste auch ausgegeben wird mit eckigen Klammern drumrum, etc.
Um das noch mal GANZ deutlich zu sagen: der String hat genau EIN backslash genau an der Stelle, an der du das erwartest. Die String-DARSTELLUNG im INTERPRETER ist eine, die so aussieht, wie sie aussehen MUSS, wenn du ein Stringliteral eingeben willst, das auch Backslashes enthaelt.
Was wuerde denn sonst passieren, wenn dein User nono hiesse? Kannst ja mal probieren, was
>>> "ich bin \nono"
vs
>>> print("ich bin \nono")
ausgibt, und wor da genau der Unterschied liegt.
Re: os.path.expanduser Doppelter Slash in Windows
Verfasst: Donnerstag 4. Oktober 2018, 13:59
von Pyranha83
Danke für die ausführliche Antwort
Mal ganz blöd gefragt: wenn ich mir den Escape Character anzeigen lassen kann mit Print repr, kann ich mir den escape character auch ausblenden lassen bei Return? Gibt es dafür eine Funktion?
Re: os.path.expanduser Doppelter Slash in Windows
Verfasst: Donnerstag 4. Oktober 2018, 14:07
von __deets__
Nochmal: du hast keinen escape Charakter in dem Return. Du hast einen String mit genau einem backslash. Du musst nichts tun. Wirklich nicht.