

この記事で分かること
- フォルダが階層構造になっている場合のファイルを検索方法が分かる
- サンプルプログラムでファイル検索の具体的な方法が分かる
pythonでファイル検索を再帰的にする概要
pythonプログラムを使って、あるフォルダの下にあるファイルを検索したい場合に、pythonではosライブラリというものを使って、フォルダの中身を再帰的に検索することができます。
「再帰的」というのは、1つのフォルダを調べるだけでなく、フォルダの中にあるフォルダの中身もチェックするという意味です。この記事では、pythonで指定ディレクトリの下を、再帰的にファイル検索する方法を説明します。
pythonでファイル検索を再帰的にする前提の環境
pythonでフォルダの全ファイルを再帰的に検索する前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。
-
-
【python】バージョン確認の方法【→プログラミング初心者向け】
続きを見る
レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。
もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。
-
-
レンタルサーバでプログラミングする方法【→ブログのサーバでできる!】
続きを見る
pythonでファイル検索を再帰的にするサンプルプログラム
ここでは、カレントディレクトリの配下のフォルダやファイルをすべて取得するサンプルコードを記載します。
ライブラリのインポート
osという名前のライブラリをインポートします。
import os
指定ディレクトリのファイルを再帰的に検索する
指定されたディレクトリ配下のファイルをファイルパスを含めてリストで返すメソッドfind_all_filesを定義しています。
def find_all_files(directory):
for cur_dir, dirs, files in os.walk(directory):
for file in files:
yield os.path.join(cur_dir, file)
Mainの処理
find_all_filesで得られたディレクトリのリストに対して、それぞれを表示しています。
if __name__ == '__main__':
for file in find_all_files('./'):
print(file)
実行結果
下記が実行結果です。
カレントディレクトリ配下には、test.pyというこのサインプルプログラムファイルと、file1とfile2というファイル、さらにdir1といフォルダがあり、dir1の下にはfile3とfile4というファイル、dir2というフォルダ、さらに、dir2フォルダの中にはfile5とfile6というファイルがあることが分かります。
$ python test.py
./test.py
./file2
./file1
./dir1/file3
./dir1/file4
./dir1/dir2/file6
./dir1/dir2/file5