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()
。
警告
現在のディレクトリを使用するソリューションはすべて失敗します。これは、スクリプトの呼び出し方法によって異なる場合や、実行中のスクリプト内で変更される場合があります。
pathlib
Python 3.4以降を使用している場合は、Ron Kalianのソリューションを参照してください。stackoverflow.com/ a / 48931294/1011724
python myfile.py
シェル、それは動作しますから、両方:!python %
と:!python myfile.py
内からのvimで失敗指定されたパスが見つかりません。これは非常に迷惑です。これの背後にある理由と潜在的な回避策について誰かがコメントできますか?