【初心者向け】Python os.path.join() とは?パスを結合する方法を学ぼう!

os.path.join() とは

この記事ではPythonでパス結合する際に用いられるos.path.join()について解説します。

皆様は、Pythonでパスを結合する時に、文字列同士を結合していないでしょうか。文字列結合でパスをつなぎ合わせると、不正なパスになることもあり、エラーの原因になる場合があります。

今回は、os.path.join()を活用することで、簡単にパスを結合できる方法を学びましょう。

パスを結合する

os.path.join()を用いることで、引数に渡した2つの文字列を結合し、1つのパスにすることが出来ます。

import os
# log と sample.logを結合し、log/sample.log というパスを作るサンプルプログラム
join_path = os.path.join("log", "sample.log")
print(join_path)

出力結果

log/sample.log

2つ以上のパスを結合する

os.path.join()には2つ以上を渡すことも可能です。

例えば、Google Colabを用いて、ファイル処理をする場合に、、contentがカレントディレクトリになるため、ファイル処理以前でパス関連で躓いてしまうことがあります。
そのような場合に、事前に定数CDIRなどをos.getcwd()を用いてカレントディレクトリを格納しておき、以下のようにしておくとファイル処理を行う際に、パス周りで躓くことは減ります。

CDIR = os.getcwd() # google colabの場合、/content/ がカレントディレクトリを指します。
image_file = os.path.join(CDIR, "img", "sample.png")
print(image_file)

※content配下に、imgフォルダがあり、その配下に、何らかの画像ファイルsample.pngがあることを想定した場合のimage_fileの定義

リスト形式でパスを結合する

os.path.join()を用いずに、パスを示す変数を定義し結合することで同様に実現できますが、文字列結合の場合、パスがうまく表現できない不正なパスになることも考えられるため、os.path.join()を用いて結合するのが良いでしょう。また、以下のようにリストの要素ごとにパスが格納された場合でも、os.path.join()の引数に*(アスタリスク)を加えるだけで、簡単にパスを作成できます。

path_lists = ["var", "www", "html", "index.html"] 
join_path = os.path.join(*path_lists)
print(join_path)

出力結果

var/www/html/index.html

補足(pathlibモジュールに関して)

この記事では詳細は解説しませんが、pathlibモジュールのPathを用いても同様にパス結合できます。

こちらも合わせて知っておくと良いでしょう。

from pathlib import Path
join_path = Path("log", "sample.log")
print(join_path)

おわりに

この記事では、os.path.join() を用いてパスを結合する方法を学びました。Pythonを効率よく学ぶには、現役のデータサイエンティストや機械学習エンジニアに質問し放題かつ、体系的に学べる動画コンテンツでデータ分析技術を学びたい方は、オンラインで好きな時間に勉強できるAI Academy Bootcampがオススメです。AI Academy Bootcampでは、講師からコードレビューもし放題なので、コードの添削も行いながらより実務レベルのコードを書けるように習得できます。