【python入門】パス名操作はos.path()を活用しよう!

今日は、os.path()について解説します。os.path()はファイルやディレクトリが指定したパスに存在するかを確認したり、

パスからファイル名や拡張子を取得したりなどを行う際に利用されるモジュールです。パス名操作をするにあたって、かなりの頻度で使われる基礎にして重要なモジュールになります。

今回の記事では

  • os.path()の使い方
  • ファイルやディレクトリの存在確認
  • ファイル名やパスなどの取得
  • ファイル名やパスなどの結合や分割

について紹介しますので、基礎的な使い方をここでぜひマスターしてください!

なお、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()はパス名操作を行ううえで欠かすことのできないモジュールです。私はちょっとしたツールを作る際に多用しています。もし使い方を忘れてしまった際は、この記事を思い出して早見表に使っていただけたら幸いです。

プログラミング学習中、
誰かへ相談したいことはありませんか?

SAMURAI TERAKOYA

プログラミングはエラーの連続。作業を進めるなかで誰かに教えてほしい場面は多いですよね。

そんな悩みを解決できるのが、侍テラコヤです。登録無料で始められて、現役エンジニアとオンラインで相談できるほか、回答率100%のQA掲示版でプログラミングに関する悩みを解決します!

気になる方はぜひ詳細をご覧ください。

→侍テラコヤの詳細をみる

Writer

遠藤貴大

株式会社SAMURAI

1991年生まれ。双子座。
理系大学で認証システムを学んだ後、アプリ開発者となる。
新しく学ぶ人に寄り添った記事を心がけて執筆します。
芸術が好き。いつか猫と暮らすのが夢。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close