python

【python】ファイル検索を再帰的にする【→プログラム初心者向け】

11月 27, 2019

how to search files recursively in python
プログラム女子
いっぱいのフォルダやファイルの中から自分が思うファイルを検索したいんだけど...
多くのフォルダの中から、ファイルを「再帰的」に調べるってことだね。pythonでは、フォルダを順番に調べていくしくみがあるから、今回はこれを紹介するね。
Tommy

pythonでファイル検索を再帰的にする概要

summary of recursive file search

pythonプログラムを使って、あるフォルダの下にあるファイルを検索したい場合に、pythonではosライブラリというものを使って、フォルダの中身を再帰的に検索することができます。

「再帰的」というのは、1つのフォルダを調べるだけでなく、フォルダの中にあるフォルダの中身もチェックするという意味です。

この記事では、pythonで指定ディレクトリの下を、再帰的にファイル検索する方法を説明します。

pythonでファイル検索を再帰的にする前提の環境

environment of recursive file search

pythonでフォルダの全ファイルを再帰的に検索する前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。

オススメ
how to check version in python
【python】バージョン確認の方法【→プログラミング初心者向け】

続きを見る

レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。

もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。

オススメ
how to programming on rental server
レンタルサーバでプログラミングする方法【→ブログのサーバでできる!】

続きを見る

pythonでファイル検索を再帰的にするサンプルプログラム

sample program of recursive file search

ここでは、カレントディレクトリの配下のフォルダやファイルをすべて取得するサンプルコードを記載します。

ライブラリのインポート

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

-python
-

© 2020 Tommy's blog Powered by AFFINGER5