Jak zdobyć katalog domowy w Pythonie?

934

Potrzebuję lokalizacji katalogu domowego aktualnie zalogowanego użytkownika. Obecnie w systemie Linux używam:

os.getenv("HOME")

Jednak to nie działa w systemie Windows. Jaki jest prawidłowy międzyplatformowy sposób, aby to zrobić?

Nathan Osman
źródło
2
Jest to oznaczone jako duplikat Jak znaleźć katalog domowy prawdziwego użytkownika za pomocą Pythona , ale głosowałem za ponownym otwarciem, ponieważ ta odpowiedź działa w Pythonie 3, a starsza odpowiedź nie.
Dour High Arch

Odpowiedzi:

1677

Chcesz użyć os.path.expanduser .
Zapewni to działanie na wszystkich platformach:

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

Jeśli korzystasz z Pythona 3.5+ , możesz użyć pathlib.Path.home () :

from pathlib import Path
home = str(Path.home())
dcolish
źródło
48
należy zauważyć, że jeśli użytkownik jest zalogowany do domeny w systemie Windows i ma swój profil zestawu folderu domu w usłudze Active Directory to będzie zgłosić ten odwzorowaną folderu sieciowego zamiast lokalnego katalogu domowego
scape
7
pathlib.Path.home()Jest dostępna począwszy od Python3.5 ( docs.python.org/3/library/pathlib.html#pathlib.Path.home )
Ivan De Paz Centeno
9
Zastanawiam się, dlaczego nikt inny nie wspomniał o tym w tym pytaniu, ale jeśli chcesz wiedzieć, gdzie jest katalog domowy innego użytkownika, możesz użyć os.path.expanduser('~username'). Prawdopodobnie dotyczy to tylko Linuksa.
Max
2
@Dipayan nie, to jest zaplecze Pythona 2 pathlib. W przypadku Pythona 3 poprawna jest ścieżka pathlib.
Haystack
2
Wynik jest taki sam. Jeśli generalnie pracujesz z pathlib, możesz preferować rozwiązanie pathlib (i pominąć wywołanie str). Jeśli chcesz, aby ścieżka była po prostu ciągiem, obie robią to samo.
Niklas Mertsch
-19

Tutaj jest linux sposób cd .. jeśli chcesz go zamiast tego użyć uwaga: (jeśli jesteś w podkatalogu, przejdzie do katalogu)

Aryan Gupta
źródło
4
Spowoduje to przejście do poprzedniego katalogu. Może patrzysz na niewłaściwe pytanie?
TheTechRobo36414519
1
Myślę, że OP szuka czegoś do pracy w skrypcie Pythona i to polecenie przejdzie do katalogu nadrzędnego cwd, który może nie być katalogiem domowym użytkownika.
Benjamin Goodacre,
Rozumiem, że to odpowiedź na złe pytanie, ale to duża liczba głosów
przeciw