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ć?


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())

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)


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.