今日は、os.path()について解説します。os.path()はファイルやディレクトリが指定したパスに存在するかを確認したり、
パスからファイル名や拡張子を取得したりなどを行う際に利用されるモジュールです。パス名操作をするにあたって、かなりの頻度で使われる基礎にして重要なモジュールになります。
今回の記事では
- os.path()の使い方
- ファイルやディレクトリの存在確認
- ファイル名やパスなどの取得
- ファイル名やパスなどの結合や分割
について紹介しますので、基礎的な使い方をここでぜひマスターしてください!
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
os.path()の使い方
os.path()を使える状態にする方法は実に簡単です。コードの初めにimport osの1行を入れて、”os”をインポートするだけです。これによってos.path()の各呼び出しが行えるようになります。
次の表は、os.path()でよく使われるものの一覧です。
exists() | ファイル及びディレクトリの存在確認ができます。戻り値はBool型になります。 |
isdir() | ディレクトリの存在確認ができます。戻り値はBool。 |
isfile() | ファイルの存在確認ができます。戻り値はBool。 |
basename() | 指定されたパスのファイル名を返します。 |
dirname() | 指定されたパスからファイル名を除いたものを返します。 |
split() | 指定されたパスのファイル名と、それまでのパスを返します。 |
splitext() | 指定されたファイルの拡張子と拡張子を除くファイル名までのパスを返します。 |
join() | パスとファイル名などを結合させる事ができます。 |
以降では、具体的な使い方を説明していきます。
ファイルやディレクトリの存在確認
ファイルやディレクトリの存在確認を行う際には、
- exists()
- isdir()
- isfile()
を利用します。戻り値はいずれもBool型で、ファイルやディレクトリが存在するときにTrueを返します。exists()はファイル、ディレクトリどちらであっても、同じ名前のものがあればTrueを返します。
一方、isdir()やisfile()はディレクトリである事、ファイルである事が条件になるので、より詳しく指定する事ができます。それでは、実際の使い方を確認してみましょう。
実行ファイル:test.py
#! /usr/bin/env python import os cur_file = __file__ #実行ファイル名を取得しています。 cur_dir = os.getcwd() #実行ファイルのパスを取得しています。 print("実行ファイル:" + cur_file) print("実行ファイルのパス:" + cur_dir) print("exists(): " + str(os.path.exists(cur_dir))) print("isdir(): " + str(os.path.isdir(cur_dir))) print("isfile(): " + str(os.path.isfile(cur_dir)))
実行結果:
実行ファイル:./test.py 実行ファイルのパス:/Users/takahiro/Desktop/writing/theme/os-path exists(): True isdir(): True isfile(): False
ディレクトリのパスを指定しているので、最後のisfile()がFalseになっているのがわかります。
ファイル名やパスなどの取得
指定したパスからファイル名を取得したい場合や、逆にファイル名を取り除いたパスを取得したい場合には、
- basename()
- dirname()
を使います。どちらも文字列を返します。実際の使い方は以下のようになります。
#! /usr/bin/env python import os path = "/A/B/C/file.py" print("path: " + path) print("basename(): " + os.path.basename(path)) print("dirname(): " + os.path.dirname(path))
実行結果:
path: /A/B/C/file.py basename(): file.py dirname(): /A/B/C
ファイル名やパスなどの結合や分割
ファイル名やパスなどを結合させたり、分割させることもできます。その際に使えるのが、
- split()
- splitext()
- join()
です。split()、splitext()はファイル名や拡張子を境目に、パスを分割しリストに代入します。join()はその逆を行い、パスやファイル名などを与えると、結合し1つのパスを返します。具体的な使い方と戻り値は以下のようになります。
#! /usr/bin/env python import os path = "/A/B/C/file.py" print("split(): " + str(os.path.split(path))) print("split() ディレクトリ名: " + str(os.path.split(path)[0])) print("split() ファイル名: " + str(os.path.split(path)[1])) print("splitext(): " + str(os.path.splitext(path))) print("splitext() 拡張子より前: " + str(os.path.splitext(path)[0])) print("splitext() 拡張子: " + str(os.path.splitext(path)[1])) path = "/A/B/C" file = "file.py" print("join(): " + os.path.join(path, file))
実行結果:
split(): ('/A/B/C', 'file.py') split() ディレクトリ名: /A/B/C split() ファイル名: file.py splitext(): ('/A/B/C/file', '.py') splitext() 拡張子より前: /A/B/C/file splitext() 拡張子: .py join(): /A/B/C/file.py
まとめ
いかがでしたでしょうか? 今回の記事では、
- os.path()の使い方
- ファイルやディれてく取りの存在確認
- ファイル名やパスなどの取得
- ファイル名やパスなどの結合や分割
について説明いたしました。
os.path()はパス名操作を行ううえで欠かすことのできないモジュールです。私はちょっとしたツールを作る際に多用しています。もし使い方を忘れてしまった際は、この記事を思い出して早見表に使っていただけたら幸いです。