【python】os.path.join関数の使い方を解説します

python

pythonのos.path.joinについて調べる人

pythonのos.path.joinについて調べる人
「pythonでos.path.join関数を使いたいのですが、どのように記述すればいいでしょう。また、os.pathライブラリにはjoin関数以外にどのようなものがあるのでしょうか?あと具体的な例として、コピペできるソースコードも欲しいです。」

こんな疑問を解決します。

本記事のテーマ

この記事を書いている私はIT業界歴12年、年収1,000万円ちょっとの金融系エンジニアです。学生時代から様々なプログラミング言語を扱ってきましたが、その中でもpythonはとても扱いやすく生産性も高く、オススメの言語です。

本記事では、細かい構文に迷ったら、例からコピー&ペーストして使えることも目指しました。少しでもお役に立てますと幸いです。

1.os.path.joinを使う時の構文

構文

os.path.join関数の構文は以下の通り、とてもシンプルです。

import os
os.path.join(《ファイルパス1》,《ファイルパス2》 [,《ファイルパス3》…] )

os.path.joinは、複数のパスをスマートに結合する関数です。戻り値は path、ディレクトリの区切り文字 (os.sep) を *paths の各パートの先頭に付けた文字列を返します。

2.pythonでのos.path.join関数の使い方

pythonでのmin関数の使い方

簡単な例

複数の数字の中から最も小さい値を抽出します。対象となる数は幾つ指定しても、マイナスの数を指定してもOKです。

>>> os.path.join("/tmp","dir1")
'/tmp/dir1'

>>> os.path.join("/tmp","dir1","dir2","file1.txt")
'/tmp/dir1/dir2/file1.txt'

>>> os.path.join(".","dir1","dir2","file1.txt")
'./dir1/dir2/file1.txt'

os.path.abspath関数との併用

os.path.abspath関数は、指定した相対ディレクトリパスを絶対パスに変更する関数です。カレントディレクトリの絶対パスを取得し、join関数でファイル名を付与する例を示します。

>>> os.path.join(os.path.abspath("."),"newfile.txt")
'/home/myUserID/newfile.txt'

ファイルの存在確認・読み込み

ファイルパスを生成し、該当のパスにファイルが存在すれば読み込みを行うプログラムをコーディングします。

>>> #ファイルパスの取得(先ほどの例と同じ処理)
>>> path=os.path.join(os.path.abspath("."),"newfile.txt")
>>> path
'/home/myUserID/newfile.txt'

>>> #ファイルの存在確認
>>> os.path.isfile(path)
True

>>> #ファイルが存在するかチェックし、存在すれば読み込みを行う
>>> if os.path.isfile(path):
...    f = open(path,'r')
...    f.read()
...    f.close()
'new test file.\n'

3.その他のos.pathライブラリ関数の使い方

その他のライブラリ関数の使用例をいくつか紹介しておきます。

>>> path=os.path.join(os.path.abspath("."),"newfile.txt")

>>> #ファイルサイズを取得
>>> os.path.getsize(path)
15

>>> #ファイル最終更新日時を取得する
>>> time.ctime(os.path.getmtime(path))
'Sat Dec 15 16:58:21 2018'

>>> #ファイル作成日時を取得する
>>> time.ctime(os.path.getmtime(path))
'Sat Dec 15 16:47:01 2018'

>>> #ファイルパスの分割
>>> os.path.split(path)
('/home/myUserID/', 'newfile.txt')

 

今回は以上です。pythonでのos.path.join関数を中心にos.pathライブラリの使い方を解説しました。pythonを使う際の参考になりましたら幸いです。

pythonは自動車、半導体メーカーなどでも使われています