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() を使いましょう。