特定の拡張子を持つファイルを Python でのみ見つける方法

胡金庫 2023年1月30日
  1. glob.glob ファイル検索方法
  2. os.listdir() ファイル検索方法
  3. pathlib.glob ファイル検索方法
  4. Python のディレクトリおよびそのサブディレクトリで特定の拡張子を持つファイルを検索する
  5. pathlib モジュールファイルを再帰的に検索する
特定の拡張子を持つファイルを Python でのみ見つける方法

この記事では、Python でのみ特定の拡張子を持つファイルを見つけるためのさまざまな方法を紹介します。

glob.glob ファイル検索方法

glob.glob モジュールを使用して、Python でのみ特定の拡張子を持つファイルを見つけることができます。

import glob

targetPattern = r"C:\Test\*.txt"
glob.glob(targetPattern)

上記のコードは、ディレクトリ C:\Test に拡張子 txt を持つファイルを見つける方法を示しています。

os.listdir() ファイル検索方法

os.listdir() 関数は、指定されたディレクトリ内のすべてのファイルをリストしますが、ファイルパス情報は含まれません。str.endswith() 関数を使用して、特定の拡張子を持つファイルを抽出できます。

>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [_ for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['test.txt', 'test1.txt']

os.path.join() 関数を使用してフルパスを作成する必要があります。

>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [os.path.join(fileDir, _) for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test1.txt']

pathlib.glob ファイル検索方法

pathlib モジュール は Python 3.4 で導入され、オブジェクト指向のファイルシステムパスを提供します。これには、Windows OS の Windows パスと Unix 類似システムの POSIX パスの 2つのスタイルがあります。

>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt')]

結果は WindowsPath で表され、str() 関数で結果を文字列表現に変換できます。例えば、

>>> [str(_) for _ in pathlib.Path(fileDir).glob(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test.txt']

Python のディレクトリおよびそのサブディレクトリで特定の拡張子を持つファイルを検索する

C:\Test\*.txt のパターンは、C:\Test ディレクトリ内の txt ファイルのみを検索し、そのサブディレクトリ内は検索しません。サブディレクトリ内の txt ファイルも検索する場合は、パターンを少し変更することができます。

import glob

targetPattern = r"C:\Test\**\*.txt"
glob.glob(targetPattern)

Test\*.txt の間のワイルドカード ** は、ディレクトリとそのサブディレクトリで txt ファイルを見つけることを意味します。

pathlib モジュールファイルを再帰的に検索する

ファイルを再帰的に検索するために glob.glob** を追加するのと同様に、pathlib.Path.glob メソッドに**を追加して、特定の拡張子を持つファイルを再帰的に検索することもできます。

>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"**\*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt'), WindowsPath('C:/Test/sub/test1.txt')]
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - Python File