パスを取得するための関数
パスを取得するための関数が標準モジュールであるos
で用意されています。
相対であれ、絶対であれ以下の関数を組み合わせることで取得すること可能です。
- 実行中ファイルのパスの取得 : __file__
- 相対パスから絶対パスの取得 : os.path.abspath()
- 絶対パスから相対パスの取得 : os.path.relpath()
- パスからファイル名の取得 : os.path.basename()
- パスからディレクトリ名の取得 : os.path.dirname()
- カレントディレクトリの取得 : os.getcwd()
絶対パス
相対パスを絶対パスに変換
相対パスを絶対パスに変換するにはos.path.abspath()
を使います。
import os
print(os.path.abspath('../Downloads'))
# /Users/ユーザー名/Downloads
実行中ファイルの絶対パス
import os
abs_path = os.path.abspath(__file__)
print(abs_path)
# /Users/ユーザー名/file_path.py
os.path.abspath()
に__file__
を渡すことで絶対パスを取得することができます。
os.path.abspath()
は指定したパスの絶対パスを返し、__file__
は実行中のファイルのパスを返してくれます。
ただし__file__
は実行時に相対パスで指定した場合には相対パスで返っくるので、os.path.abspath()
で絶対パスに直してやるわけですね。
実行中ファイルのディレクトリの絶対パス
import os
dir_path = os.path.dirname(os.path.abspath(__file__))
print(dir_path)
# /Users/ユーザー名
絶対パスにしたいのであればos.path.abspath()
も使うのを忘れないようにしましょう
相対パス
絶対パスを相対パスに変換
絶対パスを相対パスに変換するにはos.path.relpath()
を使えばOK
import os
print(os.path.relpath('/Users/ユーザー名/Downloads'))
# ../Downloads
カレントディレクトリから実行中ファイルへの相対パス
import os
print(os.getcwd())
# /Users/ユーザー名/workspace
print(__file__)
# /Users/ユーザー名/file_path.py
print(os.path.relpath(__file__))
# ../file_path.py
カレントディレクトリから実行中ファイルのディレクトリへの相対パス
import os
print(os.getcwd())
# /Users/ユーザー名/workspace
print(__file__)
# /Users/ユーザー名/file_path.py
print(os.path.relpath(__file__))
# ../file_path.py
print(os.path.dirname(os.path.relpath(__file__)))
# ..
コメント