Wie bekomme ich das Home-Verzeichnis in Python?


919

Ich muss den Speicherort des Home-Verzeichnisses des aktuell angemeldeten Benutzers ermitteln. Derzeit verwende ich unter Linux Folgendes:

os.getenv("HOME")

Dies funktioniert jedoch nicht unter Windows. Was ist der richtige plattformübergreifende Weg, um dies zu tun?


1
Dies ist ein Duplikat von So finden Sie das echte Benutzer-Ausgangsverzeichnis mit Python , aber ich habe für die Wiedereröffnung gestimmt, da diese Antwort unter Python 3 funktioniert und die ältere Antwort nicht.
— Dour High Arch

Antworten:


1640

Sie möchten os.path.expanduser verwenden .
Dadurch wird sichergestellt, dass es auf allen Plattformen funktioniert:

from os.path import expanduser
home = expanduser("~")

Wenn Sie mit Python 3.5+ arbeiten , können Sie pathlib.Path.home () verwenden :

from pathlib import Path
home = str(Path.home())

47
Es sollte beachtet werden, dass, wenn der Benutzer unter Windows bei einer Domäne angemeldet ist und sein Profil-Ausgangsordner im Active Directory festgelegt ist, dieser zugeordnete Netzwerkordner anstelle des lokalen
— Ausgangsverzeichnisses

7
Das pathlib.Path.home()ist ab Python3.5 verfügbar ( docs.python.org/3/library/pathlib.html#pathlib.Path.home )
— Ivan De Paz Centeno

9
Ich frage mich, warum es in dieser Frage niemand anderes erwähnt hat, aber wenn Sie wissen müssen, wo sich das Home-Verzeichnis eines anderen Benutzers befindet, können Sie es verwenden os.path.expanduser('~username'). Gilt wahrscheinlich nur für Linux.
— Max

2
@ Dipayan nein, das ist der Python 2 Backport von pathlib. Für Python 3 ist pathlib korrekt.
— Haystack

2
Das Ergebnis ist das gleiche. Wenn Sie im Allgemeinen mit pathlib arbeiten, bevorzugen Sie möglicherweise die pathlib-Lösung (und lassen den Aufruf von weg str). Wenn Sie den Pfad nur als Zeichenfolge verwenden möchten, tun beide dasselbe.
— Niklas Mertsch

-16

Hier ist eine Linux-Weg-CD. Wenn Sie diese stattdessen verwenden müssen, beachten Sie: (Wenn Sie sich in einem Unterverzeichnis befinden, wird sie in das Verzeichnis übernommen.)


4
Dies wechselt zum vorherigen Verzeichnis. Vielleicht suchen Sie die falsche Frage?
— TheTechRobo36414519

1
Ich denke, das OP sucht nach etwas, das in einem Python-Skript funktioniert, und dieser Befehl wird an das übergeordnete Verzeichnis von cwd gesendet, das möglicherweise nicht das Ausgangsverzeichnis des Benutzers ist.
— Benjamin Goodacre
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.