YutaKaのPython教室

Python の文法やライブラリ、API、環境構築について画像・動画・ソースコード付きで徹底解説!

Pathからフォルダ名、ファイル名、拡張子を抽出

Pythonのファイル操作用のモジュールpathlibというものがあります。

pathlibは、一連のファイル操作を一つのモジュールでこなせる非常に強力なモジュールです。

pathlibを使用すれば、特定のパスからファイル名やフォルダ名、拡張子を抽出するのも簡単です!

しかし、実際に使用する際には、次のような問題に直面することも:

  • ファイル名やフォルダ名を抽出するときは、どうするの?
  • 拡張子だけ抽出することもできる?

こういった疑問を解決するために、この記事ではpathlibのフォルダ名やファイル名等の抽出方法を図解付きで解説していきます。

フォルダ名、ファイル名抽出の基本手順

ファイル名・フォルダ名抽出の基本手順は次の通りです。

手順 スクリプトの例
1. pathlibからPathクラスをインポート from pathlib import Path
2. 対象のパスのPathオブジェクト作成 Path("パス")
3. Pathオブジェクトのプロパティで各種抽出 Path.XXX

ここでは、Pathオブジェクトを作るところから始めましたが、もちろん既存のPathを使ってもOKです。

まずは実行例を紹介して、ファイル検索が想像以上に簡単だということをお伝えしたいと思います。

フォルダ内ファイル検索の実行例

例として、次のようなサンプルパスを考えてみます。

# "C:\Users\YUTAKA\folder\file.txt"

このパスでPathオブジェクトを作成して、フォルダ名、ファイル名、拡張子をそれぞれ抽出してみます。

# pathlibからPathクラスをインポート
from pathlib2 import Path

# 検索対象フォルダのPathオブジェクト作成
MY_FILE = Path(r"C:\Users\YUTAKA\folder\file.txt")

# 親フォルダの抽出
MY_FILE.parent
# WindowsPath('C:/Users/YUTAKA/folder')

# ファイル名の抽出
MY_FILE.name
# 'file.txt'

# 拡張子の抽出
MY_FILE.suffix
# '.txt'

簡単に親フォルダ、ファイル名、拡張子を抽出できましたね。

以下で、頻繁に利用する抽出内容と対応するプロパティの一覧を紹介していきます。

フォルダ・ファイル名抽出方法一覧

フォルダ名、ファイル名関連の抽出方法を次の表に一覧でまとめています。

抽出例は、次のサンプルパスの場合の抽出例です。

# "C:\Users\YUTAKA\folder\file.txt"
抽出内容 プロパティ 抽出例
フォルダ名 .name 'file.txt'
フォルダ名(拡張子除く) .stem 'file'
拡張子 .suffix '.txt'
親フォルダ .parent WindowsPath('C:/Users/YUTAKA/folder')
親フォルダ(リスト形式) .parents WindowsPath('C:/Users/YUTAKA/folder')
   WindowsPath('C:/Users/YUTAKA')
   WindowsPath('C:/Users')
   WindowsPath('C:/')
ドライブ .drive 'C:'
ルート .root '\\'

サンプルパスで、各プロパティが対応する位置を図解すると次のようになります。

以下で、サンプルパスを使用した場合の実行例を確認してみましょう。

ファイル名の抽出

ファイル名の抽出は、.nameプロパティを参照します。

一見覚えにくいのですが、次のように連想して覚えると忘れにくいです。

  • ファイル ⇒ 名 ⇒ 名前 ⇒ name

サンプルパスで実行例を確認してみましょう。

MY_FILE.name
# 'file.txt'

また、ファイル名の拡張子を除いた部分を抽出したい場合は、.stemプロパティを参照します。

MY_FILE.stem
# 'file'

拡張子の抽出

ファイル名の抽出は、.suffixプロパティを参照します。

サンプルパスで実行例を確認してみましょう。

MY_FILE.suffix
# '.txt'

親フォルダ(ディレクトリ)の抽出

親フォルダ(ディレクトリ)の抽出は、.parentプロパティを参照します。

.parentプロパティは、Pathオブジェクトを返す点に注意しましょう。

サンプルパスで実行例を確認してみましょう。

MY_FILE.parent
# WindowsPath('C:/Users/YUTAKA/folder')

.parentsプロパティを参照すると、親フォルダ、親の親、親の親の親…をリスト形式で取得できます。

parent_folders = MY_FILE.parents

parent_folders[0]
# WindowsPath('C:/Users/YUTAKA/folder')

parent_folders[1]
# WindowsPath('C:/Users/YUTAKA')

parent_folders[2]
# WindowsPath('C:/Users')

parent_folders[3]
# WindowsPath('C:/')

parent_folders[4]
# IndexError

0から順に一つ上の親フォルダに対応します。

親フォルダの上限を超えるインデックスを与えると、IndexErrorになります。

親フォルダ内のファイルやフォルダを検索した場合は、.glob()メソッドで検索につなげる良いです。

  • 【参考】Path.glob()メソッドによるファイル検索について、次の記事でわかりやすく解説しています。
≫Python フォルダ内ファイル検索方法まとめ|pathlib.glob
Pythonのファイル操作用のモジュールpathlibというものがあります。pathlibを使用すれば、様々な条件でのファイル・フォルダの検索を行うことが可能です。しかし、実際にファイル検索する際には、次のような問題に直面することも…①pathlibを使って、ファイル検索するには具体的にどうすればいいの?②特定の条件に合ったファイルを検索する方法は?③サブフォルダも含めて、全ファイル検索するにはどうするの?こういった疑問を解決するために、この記事ではpathlibの.glob()メソッドを使用したファイル検索方法について、図解付きで解説していきます。
www.yutaka-note.com/entry/pathlib_glob
 

ドライブ・ルートの抽出

ドライブおよびルートの抽出には、それぞれ.drive, .rootプロパティを使用します。

MY_FILE.drive
# 'C:'

MY_FILE.root
# '\\'

その他のパス取得方法

最後にPathオブジェクトから、取得できるその他のパスについて紹介します。

抽出内容 メソッド 適用
カレントフォルダ .cwd() 現在の作業フォルダ
ホームディレクトリ .home() Windows: "C:¥Users¥ユーザー名"
Mac: "/Usesrs/ユーザー名"
Linux: "/home/ユーザー名"

カレントフォルダ

現在のカレントフォルダ(ディレクトリ)を取得する際は、".cwd()"メソッドを使用します。

.cwd()は、Current Working Directoryの頭文字と覚えましょう。

pythonファイルが、'C:/Users/YutaKa/作業フォルダ'にあるとすると次のような挙動になります。

MY_FILE.cwd()
# WindowsPath('C:/Users/YutaKa/作業フォルダ')

これは、Path(".").absolute()でも取得できます。

Path(".").absolute()
# WindowsPath('C:/Users/YutaKa/作業フォルダ')

ホームディレクトリ

ホームディレクトリは、OSによって異なりますが、基本的にユーザー名のフォルダです。

OS ホームディレクトリ
Windows "C:¥Users¥ユーザー名"
Mac "/Usesrs/ユーザー名"
Linux "/home/ユーザー名"

Windows環境で、ユーザー名がYutaKaの例で実行例を確認してみましょう。

MY_FILE.home()
# WindowsPath('C:/Users/YutaKa')

Pythonで作業を効率化する方法

今回はpathlibで、フォルダ名、ファイル名、拡張子等を抽出する方法を解説しました。

Pythonを使えば、簡単なスクリプトで作業を劇的に効率化することも可能です!

Pythonの効率化関係で言えば、次の記事で紹介しているような本が自動化の本がおススメです。

≫【レビュー】退屈なことはPythonにやらせよう | 単純作業は自動化
名著「退屈なことはPythonにやらせよう 」をレビュー!単純作業を自動化して、自分が本当にしたいことのために時間を確保していこう!所要時間やできるようになったことを紹介!この本を参考にして作成した、自作自動化スクリプトも紹介しています!
www.yutaka-note.com/entry/python_jido
 
≫独学でデータ分析を勉強するオススメ学習本
独学でのpythonデータ分析勉強に役立ったおススメ書籍を紹介していきます。業務でそれなりにデータ分析を行えるまで、いろいろな試行錯誤をしてきましたが、もし自分が今ゼロから勉強する立場ならどうするのがいいのか考えてみました。以下では、入門書、個別モジュール用、実践用の3つの視点でおススメ本を紹介していきます。
www.yutaka-note.com/entry/data_analysis