ホームページ >バックエンド開発 >Python チュートリアル >現在実行中の Python スクリプトのパスを確実に取得するにはどうすればよいですか?

現在実行中の Python スクリプトのパスを確実に取得するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-26 18:30:03951ブラウズ

How Can I Reliably Get the Path of the Currently Executing Python Script?

Python で現在実行中のファイルのパスを見つける

Python で現在の実行スクリプトへのパスを取得することは、ファイルにアクセスしたり、さまざまな操作を実行します。ただし、いくつかのアプローチは特定の条件下では失敗する可能性があります。この記事では、さまざまなシナリオでファイル パスを取得するための信頼できる方法について説明します。

既存のアプローチの課題

os.path.abspath(os. path.dirname(sys.argv[0])) および os.path.abspath(os.path.dirname(__file__)) には制限があります。別の Python スクリプトから実行する場合、sys.argv[0] は正しいパスを提供しない可能性があり、__file__ は py2exe スクリプト、IDLE、Mac OS X 環境、および同様のインスタンスでは使用できない可能性があります。

A Universal解決策

これらの問題に対処するための信頼できるアプローチには、inspect モジュールと os モジュールを利用することが含まれます。

<code class="python">from inspect import getsourcefile
from os.path import abspath</code>

getsourcefile(lambda:0) を使用すると、次のソース ファイルを取得できます。現在実行中のラムダ関数を使用して、他のメソッドの制限を効果的に回避します。次に、abspath を使用してパスが抽出されます。

シナリオ例

次のディレクトリ構造を考えてみましょう:

C:.
|   a.py
\---subdir
        b.py

a.py に含まれる:

<code class="python">from inspect import getsourcefile
from os.path import abspath

print("a.py: File Path =", abspath(getsourcefile(lambda:0)))
execfile("subdir/b.py")</code>

b.py に含まれる:

<code class="python">from inspect import getsourcefile
from os.path import abspath

print("b.py: File Path =", abspath(getsourcefile(lambda:0)))</code>

a.py を実行すると、次のように表示されます:

a.py: File Path = C:\a.py
b.py: File Path = C:\subdir\b.py

Thisさまざまな状況でファイル パスを正しく取得できる機能を示します。

以上が現在実行中の Python スクリプトのパスを確実に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。