相対パス・絶対パスを取得する【Python】

相対パスと絶対パスのアイキャッチPython

パスを取得するための関数

パスを取得するための関数が標準モジュールである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__)))
# ..

コメント