Python

Python globモジュールでファイルを検索する方法

arage.com@gmail.com

globモジュールは、ディレクトリのワイルドカード検索を行うためのモジュールで、特定のパターンに一致するファイル名をリストとして返すことができます。これはファイル操作を行うスクリプトを書く際に非常に便利で、ファイルの一括処理、特定の拡張子を持つファイルの検索、ディレクトリの探索など様々なシーンで使用されます。

glob関数の基本的な使用方法

基本的なパターンマッチングの例

以下はglob関数の基本的な使用方法です。この例ではカレントディレクトリ内の全てのテキストファイルを検索しています。

1import glob
2
3files = glob.glob('*.txt')
4print(files)

このコードは*.txtというパターンに一致する全てのファイル名をリストとして返します。

複数のディレクトリからファイルを見つける方法

ディレクトリのパスをパターンに含めることで、特定のディレクトリからファイルを見つけることもできます。

1import glob
2
3files = glob.glob('/path/to/directory/*.txt')
4print(files)

このコードは/path/to/directory/ディレクトリ内の全てのテキストファイルを検索します。

特定のファイルタイプ(拡張子)を持つファイルを検索する方法

特定の拡張子を持つファイルを検索するには、その拡張子をパターンに含めます。以下の例では.pyの拡張子を持つ全てのPythonファイルを検索しています。

1import glob
2
3files = glob.glob('*.py')
4print(files)

globモジュールの高度な使用法

再帰的にファイルを見つける方法

ディレクトリのツリーを再帰的に検索するには**を使用します。このパターンは任意の数のサブディレクトリに一致します。再帰的な検索を有効にするためにはrecursive=Trueを指定する必要があります。

1import glob
2
3files = glob.glob('**/*.txt', recursive=True)
4print(files)

このコードはカレントディレクトリとその全てのサブディレクトリ内のテキストファイルを検索します。

複数のファイルタイプを一度に検索する方法

複数の拡張子を持つファイルを一度に検索するには、括弧{}を使用して拡張子を指定します。

1import glob
2
3files = glob.glob('*.{txt,csv}', recursive=True)
4print(files)

このコードはテキストファイルとCSVファイルの両方を検索します。

globモジュールのパフォーマンスと効率性

globモジュールのパフォーマンスについて

globモジュールは大量のファイルやディレクトリが存在する場合、特に再帰的な検索を行う場合にはパフォーマンスが落ちる可能性があります。そのため、大規模なファイルシステムを検索する際には、必要なディレクトリやファイルタイプをできるだけ具体的に指定することが重要です。

globモジュールの効率的な使い方

globモジュールを効率的に使用するためには、以下のような点を考慮すると良いでしょう。

  • 不必要な再帰的な検索を避ける
  • ファイルタイプやディレクトリを具体的に指定する
  • パターンマッチングを効率的に行うために、可能な限り狭い範囲のワイルドカードを使用する
記事URLをコピーしました