【python】フォルダパスとファイルを結合してファイルパスを作成する[osライブラリ]

2020年3月31日

フォルダパス(絶対パス・相対パスのどちらでもOK)とファイル名を結合させてファイルパスを作成したいときはosライブラリのjoin関数を使用します。

ファイルの結合は使用する機会が多いものと思うので覚えておきましょう。
join関数は結合したい階層構造を引数で渡すと左から順番に結合します。
また、結合する引数は3つ以上の指定が可能で同時に結合することができます。

使い方

import os
 
【ファイルパス】= os.path.join( 【フォルダ名1】, 【フォルダ名2】, ・・・ , 【ファイル名】) )

ファイルパスを結合して作成する(2つ)

下記は2つの引数を渡してファイルを結合させた例になります。

def sample1():
    import os
 
    print( os.path.join( "C:\\aaa\\bbb" , "file.py") )    #C:\aaa\bbb\file.py
    print( os.path.join( "C:\\aaa\\bbb\\" , "file.py") )  #C:\aaa\bbb\file.py

5行目:右の引数にファイルパスの区切り無し。
6行目:右の引数にファイルパスの区切り有り。

上記では引数が異なるものの結果は同じものとなっています。
単純なファイルパス結合であれば文字列同士の結合で済んでしまいますが、join関数を使用すれば結合部分の区切り文字の有無を自動判別してくれます。
この点は有用なのでファイルパス結合の結合時はjoin関数を使用しましょう。

ファイルパスを結合して作成する(3つ以上)

import os

print( os.path.join( "C:\\aaa"    , "bbb" , "file.py") )    #C:\aaa\bbb\file.py
print( os.path.join( "C:\\" , "aaa" , "bbb" , "file.py") )  #C:\aaa\bbb\file.py

#結合失敗例
print( os.path.join( "C:" , "aaa" , "bbb" , "file.py") )    #C:aaa\bbb\file.py

成功例
3行目:3つの引数を結合
4行目:4つの引数を結合(C:に対して区切り文を有る)
失敗例
7行目:4つの引数を結合(C:に対して区切り文が無い)
結合時に「C:」と「aaa」の間に区切り文字が無い為、ファイルパスとして成立していない。

リスト内のデータを結合してファイルパスを作成する。

join関数は リストに*(アスタリスク)を付けることでリスト内のデータを全て結合することができます。

import os

pathList = ["C:\\","ccc","ddd"]
print( os.path.join( *pathList) )  #C:\ccc\ddd

3行目:結合元のリストを作成
4行目:リスト内のデータを全て結合する。

ソースコードはこちらから