この記事では、Pythonの標準ライブラリである`os`モジュールの`os.walk`関数を使用して、ディレクトリ(フォルダ)を再帰的に走査(探索)する方法について解説します。具体的なコード例とその詳細な解説、さらには多彩な応用例を紹介します。
os.walkとは?
`os.walk`は、Pythonの標準ライブラリ`os`モジュールに含まれる関数であり、指定したディレクトリから始めて、そのディレクトリ以下のすべてのディレクトリとファイルを再帰的に走査するための機能を提供します。
基本的な使い方
まずは、`os.walk`の基本的な使い方から見ていきましょう。
import os
# ディレクトリを再帰的に走査
for root, dirs, files in os.walk("."):
print("Root:", root) # 現在のディレクトリ
print("Dirs:", dirs) # サブディレクトリのリスト
print("Files:", files) # ファイルのリスト
上記のコードでは、カレントディレクトリ(`.`)を起点に、ディレクトリを再帰的に走査しています。
引数と返り値
`os.walk`関数は、基本的に1つの引数を取ります。それは走査を開始するディレクトリのパスです。
この関数は、走査中に見つかった各ディレクトリに対して、3つの要素(ルートディレクトリ、サブディレクトリのリスト、ファイルのリスト)を含むタプルを返します。
オプション
`os.walk`にはいくつかのオプションがあります。たとえば、`topdown=True`を設定すると、トップダウン方式でディレクトリを走査します。
応用例
さて、`os.walk`の使い方が分かったところで、いくつかの応用例を見ていきましょう。
特定の拡張子を持つファイルを探す
for root, dirs, files in os.walk("."):
for file in files:
if file.endswith(".txt"):
print(os.path.join(root, file))
この例では、`.txt`という拡張子を持つファイルのみを表示します。
空のディレクトリを探す
for root, dirs, files in os.walk("."):
if not dirs and not files:
print("Empty directory:", root)
この例では、空のディレクトリを探して表示します。
ディレクトリの階層を計算する
for root, dirs, files in os.walk("."):
level = root.count(os.sep)
print("Level:", level, "Directory:", root)
この例では、ディレクトリの階層レベルを計算して表示します。
まとめ
この記事では、Pythonの`os.walk`関数を使用してディレクトリを再帰的に走査する方法について詳しく解説しました。基本的な使い方から多彩な応用例まで、多角的にこの関数の使い方を把握できたでしょう。この知識を活かして、日々のプログラミング作業をより効率的に行ってください。
コメント