こんにちは、ごんさくです。本記事は、PythonのTips的な話です。
Pythonでファイル出力先のパスを結合するときに、文字列の結合(文字列+文字列)で実装していませんか。
もちろんその実装方法で問題ありませんが、os.pathモジュールを使用することで、もっと簡単かつ効率良く実装することができます。
本記事ではdir
(出力先ディレクトリ)とfile_name
(ファイル名)を結合する例を用いて、os.pathモジュールを使用したパスの結合について説明します。
出力先パスを文字列の結合で実装する場合
まず、+
を使って文字列結合する場合を説明します。結合対象のdir
とfile_name
は次のとおりです。
dir1 = './outout'
dir2 = './outout/'
file_name = 'sample.txt'
このとき、ファイル出力パスを+
を使用して結合する場合、dirの/
の有無によって次のように結合する必要があります。
output_path1 = dir1 + '/' + file_name
output_path2 = dir2 + file_name
print(output_path1) # ./outout/sample.txt
print(output_path2) # ./outout/sample.txt
なんてことないプログラムですが、/
の有無を見落した場合、思わぬディレクトリにファイルが出力されるなどのエラーや障害の原因となります。
os.pathモジュールを使う場合
os.path
を使うと、ズバリ結合するディレクトリなどの文字列に/
の有無を気にしなくてよくなります。
先程と同じdir1
、dir2
、file_name
を使ってファイル出力パスを定義します。
output_path1 = os.path.join(dir1, file_name)
output_path2 = os.path.join(dir2, file_name)
print(output_path1) # ./outout/sample.txt
print(output_path2) # ./outout/sample.txt
このように、/
の有無はos.path.join
内で判断して、引数で渡した値をファイルパスとして結合してくれます。
まとめ(os.path)
os.pathを使用した結合について紹介しました。
少し大げさですがこういうちょっとした実装方法でも知っていると知らないのでは、生産性や品質に関わってきますので、ぜひ使ってみてください。
私もPythonを勉強していくなかで、良さそうなライブラリや実装方法は自分の理解を深める上でも発信していきたいなと思います。
では!