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?

Nathan Osman
quelle
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())
dcolish
quelle
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.)

Aryan Gupta
quelle
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