【Python】os.path.expanduserって何?わかりやすく解説!

Pythonでファイルパスを扱うときに、ユーザーのホームディレクトリ(自分のフォルダ)を簡単に指定したいことがあります。

たとえば、

のように「~」を使ってホームディレクトリを表す書き方は、ターミナルやシェルでは一般的です。

しかし、この「~」はPythonのファイル操作ではそのままだと使えません。

そんなときに役立つのが os.path.expanduser という関数です。

この記事ではos.path.expanduserが何をするものなのか、どんな場面で便利なのか、具体例とともにわかりやすく解説します。

os.path.expanduserとは?

os.path.expanduserは、パス文字列の中にある ~」や「~ユーザー名」を実際のホームディレクトリのパスに展開 してくれる関数です。

つまり、ユーザーがいる場所をPythonが正確に認識できるパスに変換してくれるということです。

使い方はとても簡単で、次のように使います:

このコードでは、~/Documents/data.txt がたとえば次のように変換されます:

  • MacやLinuxの場合 → /Users/ユーザー名/Documents/data.txt
  • Windowsの場合 → C:\Users\ユーザー名\Documents\data.txt

どんなときに便利?

次のようなときにとても便利です:

  • ホームディレクトリ以下にファイルを保存したいとき
  • ホームディレクトリからファイルを読み込みたいとき
  • OSごとに違うホームディレクトリの場所を気にせずにコードを書きたいとき

特にクロスプラットフォーム対応が求められる場合(Windows/Mac/Linuxで共通のコードを書く場合)に役立ちます。

手動でホームディレクトリを取得してパスを作る必要がなく、~をそのまま使えるのは非常に便利です。

具体例

例1:ホームディレクトリにあるファイルの絶対パスを取得する

やりたいこと:
ホームディレクトリ内の「settings.json」というファイルの正確なパスを取得したい。

結果例(Macの場合):

結果例(Windowsの場合):

例2:ホームディレクトリ配下のフォルダに新しいファイルを保存する

やりたいこと:
~/Documents/reports/フォルダにレポートファイルを保存したい。

このコードは、ユーザーごとの環境に合わせて正しいパスに展開されます。

そのため、他の人の環境でもそのまま動きます。

例3:存在確認に使う

やりたいこと:
ホームディレクトリの「my_data」フォルダが存在するか確認する。

他によくある疑問

os.path.expanduserは絶対パスに変換するの?

正確には「~ を展開する」だけであり、パス全体を絶対パスにするわけではありません。

絶対パスにしたい場合は、さらにos.path.abspath()と組み合わせて使います。

こうすれば、正真正銘の「絶対パス」を取得できます。

Windowsでも使えるの?

はい、Windowsでも問題なく使えます

Windowsではユーザーのホームディレクトリは通常 C:\Users\ユーザー名 に対応しています。

expanduserは自動的に正しいパスに展開してくれます。

まとめ

os.path.expanduserは:

  • パス文字列内の~ユーザーのホームディレクトリパスに展開する関数
  • クロスプラットフォームでホームディレクトリを扱いたい時に便利
  • Windows/Mac/Linuxいずれでも動作する

使い方はとても簡単なので、ユーザーのフォルダにアクセスするコードを書くときはぜひ活用しましょう

パスの手作業によるミスや、OSによる違いを気にせず済むようになります。

今後、ファイルの読み書きや設定ファイルの保存場所を指定するときなどに、ぜひexpanduserを使ってみてください。

きっと役立つはずです!

おすすめの記事