Pythonでホームディレクトリを取得するにはどうすればよいですか?


932

現在ログオンしているユーザーのホームディレクトリの場所を取得する必要があります。現在、私はLinuxで以下を使用しています。

os.getenv("HOME")

ただし、これはWindowsでは機能しません。これを行うための正しいクロスプラットフォームの方法は何ですか?


2
これは、Pythonを使用して実際のユーザーのホームディレクトリを見つける方法の複製としてマークされていますが、この回答はPython 3で機能し、古い回答は機能しないため、再度開くことにしました。
Dour HighArch20年

回答:


1675

os.path.expanduserを使用します。
これにより、すべてのプラットフォームで確実に機能します。

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

あなたがにしている場合はPython 3.5+を使用できpathlib.Path.homeを()

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

48
ユーザーがWindows上のドメインにログオンしていて、プロファイルのホームフォルダーがアクティブディレクトリに設定されている場合、ローカルホームディレクトリではなく、マップされたネットワークフォルダーが報告されることに注意してください
scape

7
pathlib.Path.home()以降Python3.5(から入手可能であるdocs.python.org/3/library/pathlib.html#pathlib.Path.home
イワン・デ・パズCenteno

9
この質問で他に誰も言及していないのはなぜだろうかと思いますが、他のユーザーのホームディレクトリがどこにあるかを知る必要がある場合は、を使用できますos.path.expanduser('~username')。おそらくLinuxにのみ適用されます。
最大

2
@Dipayanいいえ、それはpathlibのPython2バックポートです。Python 3の場合、pathlibは正しいです。
ヘイスタック

2
結果は同じです。一般的にpathlibを使用している場合は、pathlibソリューションを使用することをお勧めします(およびの呼び出しを省略しますstr)。パスを文字列として使用するだけの場合は、どちらも同じように機能します。
NiklasMertsch19年

-19

これがLinuxの方法のCDです..代わりにそれを使用する必要がある場合は注意してください:(サブディレクトリにいる場合は、ディレクトリに移動します)


4
これは前のディレクトリに変更されます。多分あなたは間違った質問を見ていますか?
TheTechRobo364145 1920

1
OPはPythonスクリプトで機能するものを探しており、そのコマンドはcwdの親ディレクトリに移動します。これはユーザーのホームディレクトリではない可能性があります。
ベンジャミングッドエーカー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.