How to get the home directory in Python?

When building Python applications that store or retrieve user-specific files and settings, you often need to access the home directory. The home directory is the default location on a computer where user-related data is stored, such as documents, configuration files, and application data.

Python provides simple and cross-platform ways of finding the home directory programmatically, making it easy to write code that works on Windows, macOS, and Linux without modifications.

In this article, we'll explore different methods to get the home directory in Python.

Using os.path.expanduser("~")

The os.path.expanduser() function from Python's built-in os.path module expands the tilde (~) character to the user's home directory. This is the most portable method that works across all operating systems.

Example

Here we get the user's home directory by passing the ~ symbol to os.path.expanduser() ?

import os

home_directory = os.path.expanduser("~")
print("Home directory:", home_directory)
Home directory: C:\Users\username

Using Path.home()

Path.home() is a method from Python's pathlib module that returns the home directory as a Path object. This is the modern, object-oriented approach introduced in Python 3.4.

Example

Here we obtain the user's home directory using the Path.home() method ?

from pathlib import Path

home_directory = Path.home()
print("Home directory:", home_directory)
print("Type:", type(home_directory))
Home directory: C:\Users\username
Type: <class 'pathlib.WindowsPath'>

Using Environment Variables

You can access environment variables that store the home directory path. However, this approach requires different variable names for different operating systems.

Unix/Linux/macOS

On Unix-based systems, use the HOME environment variable ?

import os

# Works on Unix/Linux/macOS
home_directory = os.environ.get('HOME')
print("Home directory:", home_directory)
Home directory: /home/username

Cross-Platform Solution

For a cross-platform solution using environment variables, check the operating system first ?

import os

# Cross-platform approach
if os.name == 'nt':  # Windows
    home_directory = os.environ.get('USERPROFILE')
else:  # Unix/Linux/macOS
    home_directory = os.environ.get('HOME')

print("Home directory:", home_directory)
Home directory: C:\Users\username

Comparison

Method Cross-Platform Return Type Best For
os.path.expanduser("~") Yes String General use, legacy code
Path.home() Yes Path object Modern code, path operations
os.environ No (manual) String When you need specific control

Conclusion

Use Path.home() for modern Python applications as it returns a convenient Path object. Use os.path.expanduser("~") for broader compatibility and when working with string paths. Both methods work seamlessly across all operating systems.

Updated on: 2026-03-24T18:22:25+05:30

9K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements