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.