Python でパスを結合する

パスの結合の難しさ

パスを表す文字列が二つ与えられたとします。

path1 = '/User/user1/docs' # これはディレクトリ
path2 = './games/my_file.txt' # 相対パスでファイル名

path1 のディレクトリからの相対パスとして、 my_file.txt の絶対パスを組み立てるにはどうした良いでしょうか。

もし、パスを単純につなぎ合わせると、次のようになってしまいます。

path1 = '/User/user1/docs'
path2 = './games/my_file.txt'
print( path1 + path2 )
# /User/user1/docs./games/my_file.txt 

docsの後に直ちにドットがつなぎ合わされて、不正なパスになっています。パスの切れ目を表す区切り文字が抜けています。

このように、パスを表す文字列を単純に結合していくだけでは、不正なパスになる可能性があります。

適切な場所にパスの区切り文字 (MacOS/Linux ではスラッシュ、Windows ではバックスラッシュ) を付け加えることが必要です。

Python でパスを結合する

Python でパスを表す文字列を足し合わせるには os.path.join() 関数を使います。 os.path.join() 関数を使うと、自動的に適切な位置にパスの区切り文字が挿入されます。

import os
path1 = '/User/user1/docs'
path2 = './games/my_file.txt'
path = os.path.join(path1, path2)
print(path)
# /User/user1/docs/./games/my_file.txt

Python でパスを結合する場合は、単純に文字列を結合するのではなく、 os.path.join() を使いましょう。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門