Pythonのglob関数でファイルを再帰的に検索する方法を解説
Pythonのglobモジュールを使ってファイルを再帰的に検索するには、Python 3.5以降が必要です。globモジュールは「**」という特殊な記法(recursiveフラグを指定した場合にのみ有効)をサポートしており、これを使うことでサブディレクトリも含めて再帰的にファイルを探索できます。
glob.iglobを使った再帰検索の例
import glob
for filename in glob.iglob('src/**/*', recursive=True):
print(filename)
このコードでは、srcディレクトリ以下のすべてのファイルとフォルダを再帰的に取得し、そのパスを1つずつ出力します。if文と組み合わせれば、拡張子や名前のパターンなど、任意の条件でファイルを絞り込むことも可能です。
古いPythonバージョンでの代替手段:os.walk
Python 3.5未満の環境では、「**」記法が使えないため、代わりにos.walkを使用してディレクトリを再帰的に走査する方法が一般的です。以下の例では、正規表現に一致するファイル名だけを出力しています。
import os, re, os.path
pattern = "^your_regex_here$"
mypath = "my_folder"
for root, dirs, files in os.walk(mypath):
for file in filter(lambda x: re.match(pattern, x), files):
print(file)
このコードは、指定したフォルダ(ここではmy_folder)内を再帰的に巡回し、変数patternに設定した正規表現にマッチするファイル名を見つけて出力します。patternの部分を自分の用途に合わせた正規表現に置き換えてください。
まとめ
- Python 3.5以降なら、
glob.iglob('パス/**/*', recursive=True)で簡単に再帰検索ができる - それ以前のバージョンでは、
os.walkと正規表現を組み合わせるのが効果的
目的や使用しているPythonのバージョンに応じて、これらの方法を使い分けると良いでしょう。
-
WindowsでPythonを使う方法|インストールから実行・モジュール導入まで完全解説
初心者にも学びやすいプログラミング言語の代表格として、Pythonは世界中の何百万人ものコーダーに選ばれています。学習のハードルが低く、Windows・macOS・Linuxなど主要なOSすべてでサポートされており、Webサイト開発からデスクトップゲーム制作まで、幅広いプロジェクトに活用できるのが魅力です。 macOSやLinuxではPythonが最初からインストールされていることが多い一方、Windowsではいくつか追加の手順を踏む必要があります。この記事では、WindowsでPythonをインストールし、実際に使い始めるまでの流れをわかりやすく解説します。 WindowsへのPyt
-
PythonのTkinterでスレッドを使う方法|threadingモジュールによる非同期処理の基本
Tkinterでは、スレッド(Threading)を活用することで、複数の関数を同時に実行できます。これにより、アプリケーション内の処理を非同期で動かすことが可能になります。 Pythonでスレッドを使用するには、まずthreadingモジュールをインポートし、そのThreadクラスを継承した新しいクラスを定義します。そして、クラス内でrunメソッドをオーバーライドし、実行したい処理をその中に記述します。 つまり、スレッドを使えば複数の作業を並行して進めることができます。Tkinterアプリケーションでスレッドを実現する際は、Thread()関数を利用します。 ここでは、「一定時間スリープした