注目キーワード

【Python】globを使ってファイルの一覧を取得する

プログラムを書いていると、pandasでファイルを読み込んだり、JSONファイルを読み込んだりなど、PC上の様々なファイルにアクセスしてデータを読み込むことがあります。globを使うことで、ファイルの一覧を柔軟に取得することができます。こちらの記事では簡単な使い方を見ていきます。

サンプルのデータ

globを利用してファイル一覧を取得するため、仮のディレクトリ構造を作成しました。サンプルのスクリプトと、サンプルのworking構造を作成しています。

globを利用してファイル名一覧を取得する

サンプルソース

サンプルの実装です。globを使ってファイルの一覧をリストとイテレータで取得する例です。

  • 1つ目、2つ目の例では、working以下をワイルドカード*で取得しています。
  • 3つ目、4つ目の例では、ワイルドカード**とrecursiveを使い、挙動の違いを確認しています(直下のみを確認するか、再帰的にディレクトリを全て確認するかの違い)
  • 5つ目、6つ目の例では、イテレータを取得し、イテレータをlist()でリストにした場合に同じ結果になるかを確認しています。
  • 7つ目の例では、ディレクトリ名がsubで始まる場合のみ対象にします。

実行結果

実行結果を確認します。

  • 1つ目・2つ目の場合には、working直下のディレクトリを取得できました。
  • **を利用する3つ目・4つ目を比較すると、再帰的な指定(recursive=True)によって全てのファイルを取得できました。
  • 5つ目・6つ目を見ると、イテレータでも同じ結果が得られていることが分かります。
  • 7つ目の例を見ると、ディレクトリ名がsubからはじまる2つのみが得られました。

globとos.pathを利用してファイル名一覧を取得する

globを利用してファイル名の一覧を取得しました。ここでパス操作に関するos.pathを合わせて利用することで、ファイルの処理を更に丁寧に行うことができます。globと正規表現を合わせてやってもいいですが、使いやすい方を使うといいと思います。

os.pathを合わせて利用するサンプルソース

  • [1]の例では、ファイル名がtxtで終わるものだけを選択します
  • [2]の例では、ディレクトリを除いてファイルのみを選択します
  • [3]の例ではファイルのみを選択した上で、直接のファイル名、ファイル名(拡張子除く)、拡張子、を取得します。

実行結果

実行結果になります。

スポンサーリンク

このようなプログラムを使うことで、globでファイル名の一覧を取得しつつ、いろいろなフィルターをかけ、対象のデータだけを処理することができます。大量のデータを順番に処理する場合など、必要に応じて使ってみてくださいね。