【Python】相対パスと絶対パスを相互変換する方法を紹介!「os.path.abspath」「os.path.relpath」

こんにちは!

皆さんは、相対パスを絶対パスに、絶対パスを相対パスに変換したいと思ったことはありませんか?

Python初心者
それぞれのパスの確認にも使えるね!

相対パスを絶対パスに変換するには、「os.path.abspath()」、絶対パスを相対パスに変換するには、「os.path.relpath()」を使うと、簡単にできますよ。

今回の記事では、以下の内容について紹介します。

  • 相対パスを絶対パスに変換する方法
  • 絶対パスを相対パスに変換する方法

相対パスと絶対パスの相互変換

相対パスを絶対パスに変換する方法

相対パスを絶対パスに変換するには、「os.path.abspath()」を使用します。

os.path.abspath(“相対パス”)
相対パスを指定すると、それに対応した絶対パスを返してくれます。
ソースコード
import os

print(os.path.abspath(".."))
print(os.path.abspath(""))
print(os.path.abspath("testdir"))

実行結果

/Users/(ユーザ名)/Desktop
/Users/(ユーザ名)/Desktop/test
/Users/(ユーザ名)/Desktop/test/testdir

対応した絶対パスを返してくれていますね!

ちなみに何も指定しないと、カレントディレクトリの絶対パスを返してくれます。(実行結果2行目)

絶対パスを相対パスに変換する方法

絶対パスを相対パスに変換するには、「os.path.relpath()」を使用します

os.path.relpath(“絶対パス”)
絶対パスを指定すると、それに対応した相対パスを返してくれます。
では、先ほど取得した絶対パスを相対パスに変換してみましょう。
ソースコード
import os

print(os.path.relpath("/Users/(ユーザ名)/Desktop"))
print(os.path.relpath("/Users/(ユーザ名)/Desktop/test"))
print(os.path.relpath("/Users/(ユーザ名)/Desktop/test/testdir"))

実行結果

..
.
testdir
abspathでは何も指定しなければ、カレントディレクトリの絶対パスを返してくれますが、relpathでは、エラーが出ます。
print(os.path.relpath(""))

実行結果

ValueError: no path specified

この注意点はしっかりと覚えておきましょう!

まとめ

今回の記事では、以下の内容について紹介しました。

  • 相対パスを絶対パスに変換する方法
    「os.path.abspath()」を使用
  • 絶対パスを相対パスに変換する方法
    「os.path.relpath()」を使用
Python初心者
絶対パスがわからない時には簡単に変換できていいね!

皆さんも両方を覚えて、しっかりと相互変換できるようになりましょう!