こんにちは!
皆さんは、相対パスを絶対パスに、絶対パスを相対パスに変換したいと思ったことはありませんか?
それぞれのパスの確認にも使えるね!
相対パスを絶対パスに変換するには、「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()」を使用
絶対パスがわからない時には簡単に変換できていいね!
皆さんも両方を覚えて、しっかりと相互変換できるようになりましょう!