Pythonの実行スクリプト,importスクリプトのパス取得
スクリプト自身やメインスクリプトのパスを取得する方法.非常に基本的な内容だけど,メインスクリプト内,importされるスクリプト内で微妙に違うので注意が必要.
以下のtest1.pyとtest2.pyをデスクトップに作成してtest1.pyを実行.
- test1.py(実行スクリプト)
import os, sys print "in test1.py:", __name__, __file__, sys.argv[0] print " curdir:", os.getcwd() import test2
- test2.py(importされるスクリプト)
import os, sys print "in test2.py:", __name__, __file__, sys.argv[0] print " curdir:", os.getcwd()
出力は以下の通り
in test1.py: __main__ test1.py test1.py curdir: C:\Users\%username%\Desktop in test2.py: test2 C:\Users\%username%\Desktop\test2.py test1.py curdir: C:\Users\%username%\Desktop
それぞれの変数の中身は以下の通り.実行したスクリプト内に記述された場合を「実行スクリプト」,importされたスクリプト内に記述された場合を「importスクリプト」と書く.
- __name__
- 実行スクリプト内では"__main__",importスクリプト内ではimportされたときの名前(パッケージ内のスクリプトとして呼び出された場合はドットが付いたりする)になる
- __file__
- 実行スクリプト内ではスクリプト名,importスクリプトの場合はimportスクリプトの絶対パス.※ファイルに変更を加えないまま2回目以降importされた場合は.pycになることに注意
- sys.argv[0]
- 実行スクリプト内でもimportスクリプト内でも実行スクリプトのファイル名が格納されている
- os.getcwd()
- 実行スクリプト内でもimportスクリプト内でも実行スクリプトがあるディレクトリ(カレントディレクトリ)が表示される.※カレントディレクトリはos.chdir()で変更される可能性もある