現在のスクリプトディレクトリを適切に判別するにはどうすればよいですか? [重複] 質問する

現在のスクリプトディレクトリを適切に判別するにはどうすればよいですか? [重複] 質問する

Python で現在のスクリプト ディレクトリを確認するための最良の方法を知りたいと思います。

Python コードを呼び出す方法が多数あるため、適切な解決策を見つけるのが難しいことがわかりました。

ここにいくつかの問題があります:

  • __file__スクリプトが で実行された場合は定義されませんexecexecfile
  • __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 はまったく別の場所にある可能性があります。

おすすめ記事