Python で現在のスクリプト ディレクトリを確認するための最良の方法を知りたいと思います。
Python コードを呼び出す方法が多数あるため、適切な解決策を見つけるのが難しいことがわかりました。
ここにいくつかの問題があります:
__file__
スクリプトが で実行された場合は定義されませんexec
。execfile
__module__
モジュール内でのみ定義される
使用例:
./myfile.py
python myfile.py
./somedir/myfile.py
python somedir/myfile.py
execfile('myfile.py')
(別のスクリプトから、別のディレクトリに配置され、別の現在のディレクトリを持つことができます。
完璧な解決策はないことはわかっていますが、ほとんどのケースを解決できる最善のアプローチを探しています。
最もよく使用されるアプローチは ですos.path.dirname(os.path.abspath(__file__))
が、 を含む別のスクリプトからスクリプトを実行する場合、これは実際には機能しませんexec()
。
警告
現在のディレクトリを使用するソリューションはすべて失敗します。これは、スクリプトの呼び出し方法によって異なる場合があり、実行中のスクリプト内で変更されることもあります。
ベストアンサー1
os.path.dirname(os.path.abspath(__file__))
確かに、これがあなたが得る最高のものなのです。
exec
/を使用してスクリプトを実行することはまれです。通常は、モジュール インフラストラクチャを使用してスクリプトをロードする必要があります。これらのメソッドを使用する必要がある場合は、スクリプトに渡すを設定して、そのファイル名を読み取れるようにすることexecfile
をお勧めします。__file__
globals
実行されたコードでファイル名を取得する他の方法はありません。ご指摘のとおり、CWD はまったく別の場所にある可能性があります。