¿Cuál es una forma multiplataforma de obtener el directorio de inicio?

Resuelto Nathan Osman asked hace 14 años • 5 respuestas

Necesito obtener la ubicación del directorio de inicio del usuario que ha iniciado sesión actualmente. Actualmente, he estado usando lo siguiente en Linux:

os.getenv("HOME")

Sin embargo, esto no funciona en Windows. ¿Cuál es la forma multiplataforma correcta de hacer esto?

Nathan Osman avatar Oct 27 '10 06:10 Nathan Osman
Aceptado

Quieres usar os.path.expanduser .
Esto garantizará que funcione en todas las plataformas:

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

Si estás en Python 3.5+ puedes usar pathlib.Path.home() :

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

Pero normalmente es mejor no convertir Path.home()a cadena. Es más natural usarlo de esta manera:

with open(Path.home() / ".ssh" / "known_hosts") as f:
    lines = f.readlines()
Dan avatar Oct 26 '2010 23:10 Dan

Descubrí que el módulo pathlib también admite esto.

from pathlib import Path
>>> Path.home()
WindowsPath('C:/Users/XXX')
Jaeyoon Jeong avatar Feb 14 '2021 12:02 Jaeyoon Jeong