Pythonでディレクトリツリーを取得してファイル一覧を表示する方法【os.walkの使い方】

Pythonでディレクトリ内に含まれているすべてのディレクトリやファイルを取得したいときに使えるのがos.walk関数です。

この関数を使うとすべてのファイルやディレクトリをforループを使って取り出すことができます。

フォルダとディレクトリは同じ意味です。主観ですがディレクトリは「作業スペース」で、フォルダは「ただの入れ物」というイメージが強いです。

os.walk関数とは

osモジュールの関数でディレクトリ内のディレクトリやファイルを取得することができます。

os.walk関数は基本的にfor文でループ処理をしてディレクトリやファイルの名前を取り出します。

Python-os.walk公式ページ

os.walk関数はgeneratorオブジェクトを返します。オブジェクトとはデータの種類・性質とそのデータに対してできる処理をまとめて指す言葉です。オブジェクトによってできることとできないことがあるので注意が必要です。

print関数では取り出せない

print関数をつかってもこのようにメモリの番号が出てくるだけなので注意が必要です。また、リストのようにインデックスを指定すると「TypeError」になります。generatorオブジェクトにはインデックはありません。

for文での使い方

変数が1つ

階層ごとにタプルに格納される

以下の「blogディレクトリ」をos.walk関数を使って表示します。

タプルには以下の順番で格納されています。

  1. ディレクトリパス
  2. 含まれるディレクトリ名のリスト
  3. 含まれるファイル名のリスト

変数が2つ

2変数では「ValueError」になる

変数が3つ

  • dirs変数:各ディレクトリのパスを格納
  • subdirs変数:各ディレクトリ名を格納
  • files変数:各ファイル名を格納

このように各階層のディレクトリ名とファイル名を表示することができます。もちろん、階層にディレクトリが存在しない場合は「内部のディレクトリ名」は省略されています。

まとめ

  • os.walk関数:ディレクトリツリーを取得
    • generatorオブジェクト
  • for文でループさせて表示する
    • 変数は1個か3個に限る

関連記事

プログラミング言語のなかでも人気の高いPythonを学習する教材を紹介します。 最近ではプログラミングスククールがたくさんあるので迷うと思います。 ですが、まずは無料教材から始めてみましょう。苦労した分だけ力がつきます。 […]