Python でホームディレクトリを取得する

ユーザーのホームディレクトリを取得するには os.path.expanduser()pathlib.Path.home() を使う。

import os

home = os.path.expanduser('~')
print(home)  # /home/username(Linux/Mac)または C:\Users\username(Windows)

~ はホームディレクトリを表すシェルの記法で、expanduser() がこれを実際のパスに展開する。

pathlib を使う方法

pathlib では Path.home() クラスメソッドでホームディレクトリを取得できる。

from pathlib import Path

home = Path.home()
print(home)  # /home/username

ホームディレクトリ内のファイルへのパスを構築するには、/ 演算子で結合する。

from pathlib import Path

config_file = Path.home() / '.config' / 'myapp' / 'settings.json'
print(config_file)  # /home/username/.config/myapp/settings.json

~ を含むパスを展開する

パス文字列に ~ が含まれている場合、expanduser() で展開する必要がある。

import os

path = '~/documents/data.txt'
expanded = os.path.expanduser(path)

print(expanded)  # /home/username/documents/data.txt

pathlib でも expanduser() メソッドで同じことができる。

from pathlib import Path

path = Path('~/documents/data.txt')
expanded = path.expanduser()

print(expanded)  # /home/username/documents/data.txt

他のユーザーのホームディレクトリを取得する

~username の形式で他のユーザーのホームディレクトリを取得できる(Unix系のみ)。

import os

other_home = os.path.expanduser('~otheruser')
print(other_home)  # /home/otheruser

環境変数からホームディレクトリを取得する

os.environ を使って環境変数から直接取得することもできる。

import os

# Unix系
home = os.environ.get('HOME')

# Windows
home = os.environ.get('USERPROFILE')

ただし、クロスプラットフォームで動作させるには Path.home()expanduser() を使う方が確実だ。