# 【5分で分かる】コード付きで解説！Pythonのglobの使い方まとめ！

> 本記事では、Pythonでファイル取得に便利なライブラリ”glob”の使い方について見ていきます！大量のデータファイルを扱うデータ分析の場面で利用することが多いので、ぜひ使いこなせるようになりましょう！

- URL: https://toukei-lab.com/glob
- 公開: 2022.11.29 / 更新: 2025.01.21
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
本記事では、Pythonでファイル取得に便利なライブラリ”glob”の使い方について見ていきます！大量のデータファイルを扱うデータ分析の場面で利用することが多いので、ぜひ使いこなせるようになりましょう！
:::

こんにちは！スタビジ編集部です！

この記事では、Pythonでディレクトリに格納されたファイル名を抽出するのに便利なライブラリ”**glob**“の使い方についてまとめていきたいと思います！

:::talk{who="robotan"}
複数のファイルを同時に扱えるようになると便利だな～！例えばデータの入っているcsvファイルだけを選択したい時とか！
:::

:::talk{who="umatan"}
そうだね！一つ一つファイル名を選択してってやる方法もあるけど正直面倒！

そんな時に役立つのが”glob”なんだ！
:::

ぜひglobの基本についてしっかりおさえて扱えるようになっておきましょう！

## globとは？

![glob](/wp-content/uploads/2022/11/glob2.png)

“**glob**“はPython標準のライブラリの一つでディレクトリに格納されたファイル名を抽出するのに使われます！

globモジュールにはglob()やigrob()、escape()といった関数があります！

その中で、よく使われるのが<mark>glob()なのでぜひ使い方を覚えておきましょう！</mark>

glob()はファイルの抽出条件を引数として与えることで、その条件にマッチしたファイルやフォルダの一覧をリストとして返してくれます！

ただ、この抽出条件の書き方が少し難しいので実戦で見ていきましょう！

:::talk{who="umatan"}
複数のファイルをまとめたりするのに使うのが”**glob**“！

似たような名前のファイルから一つ一つデータを取り出すときとかに便利！
:::

## globを使ってファイルを抽出してみよう！

実際にglobを使ってみましょう！

学習用のデータがある「**trainフォルダ**」とサンプルデータが「**sample_dataフォルダ**」のあるディレクトリを想定します！

![glob](/wp-content/uploads/2022/01/directory1-min.jpg)

trainフォルダの中には分析の元になるデータがcsvファイルとして01\~47まで格納されています！

では、globを使ってこのcsvファイルのファイル名を取得していきましょう！

```python
file = glob.glob("train/01.csv")
```

glob()の中に習得したいファイルの条件(pathname)を記述します！

今回はtrainフォルダの中の”01.csv”を指定しました！

“file”の中身を見てみるとでファイル名が確認できます！

```python
print(file)
>>['train/01.csv']
```

:::box
\[‘train/01.csv’]
:::

## 複数のファイルを抽出する

続いて、複数のファイルを抽出してみましょう！

方法は先ほどと同じで、glob()の中に条件を記述します！

```python
files = glob.glob("train/*.csv")
```

ここの「\*」はワイルドカードと呼ばれるもので特殊な意味を持ち、条件の指定に役立ちます！

globでよく使われる特殊文字を見ていきましょう！

<table class="table">
<tbody>
<tr>
<th>*</th>
<td>0文字以上の任意の文字列</td>
</tr>
<tr>
<th>?</th>
<td>1文字の任意の文字</td>
</tr>
<tr>
<th>[文字列]</th>
<td>[]の中に含まれている文字の中の１文字</td>
</tr>
<tr>
<th>[!文字列]</th>
<td>[]の中に含まれない１文字</td>
</tr>
</tbody>
</table>

上の例の”**train/\*.csv**“は<mark>「trainフォルダの中にあるcsvファイルすべてを抽出する」という意味になります！</mark>

filesの中を見てみるとデータのcsvファイルがリスト形式で格納されています！

```python
print(files)
>>['train/43.csv', 'train/16.csv', 'train/20.csv', 'train/47.csv', 'train/31.csv', 'train/01.csv', 'train/10.csv', 'train/39.csv', 'train/09.csv', 'train/36.csv', 'train/25.csv', 'train/44.csv', 'train/11.csv', 'train/23.csv', 'train/14.csv', 'train/17.csv', 'train/04.csv', 'train/38.csv', 'train/26.csv', 'train/06.csv', 'train/21.csv', 'train/07.csv', 'train/29.csv', 'train/13.csv', 'train/27.csv', 'train/28.csv', 'train/02.csv', 'train/19.csv', 'train/22.csv', 'train/46.csv', 'train/34.csv', 'train/18.csv', 'train/35.csv', 'train/32.csv', 'train/37.csv', 'train/08.csv', 'train/24.csv', 'train/42.csv', 'train/05.csv', 'train/12.csv', 'train/30.csv', 'train/45.csv', 'train/03.csv', 'train/15.csv', 'train/40.csv', 'train/33.csv', 'train/41.csv']
```

次は、「01\~09の数字がついたcsvファイル」だけを抽出してみましょう！

```python
file1 = glob.glob("train/[0][1-9].csv")
```

いろんなやり方があると思いますが、今回は\[]を使って条件を指定しています！

2桁目は0で固定なので\[0]、1桁目は1\~9の文字のどれかなので\[1-9]と指定します！

“文字-文字”を使うと文字から文字までとなります！他に\[a-z]と書いてa\~zまでと意味で使うことが多いです！

file1の中を見てみると意図したファイル名が格納されていますね！

```python
print(file1)
>>['train/01.csv', 'train/09.csv', 'train/04.csv', 'train/06.csv', 'train/07.csv', 'train/02.csv', 'train/08.csv', 'train/05.csv', 'train/03.csv']
```

:::talk{who="umatan"}
ワイルドカードを駆使して、自分の好きなようにファイルを集めていこう！
:::

## 別ディレクトリのファイルも抽出する

先ほど「glob()の中に習得したいファイルの条件(pathname)を記述します」と記載しましたが、<mark>ファイルの条件は具体的にパスを指定しているため、そのディレクトリ内を対象にしています、、、</mark>

なので、このままだと別のディレクトリにあるファイルと抽出できなくなります！

例えば、「trainフォルダ」と「testフォルダ」それぞれに目当てデータのファイルがある場合を想定します！「trainフォルダ」の中には「train2フォルダ」があり、そこにもデータがあります！

![glob](/wp-content/uploads/2022/01/directory3-min-238x300.jpg) ![glob](/wp-content/uploads/2022/01/directory4-min-223x300.jpg)

この時、「trainフォルダ」と「testフォルダ」にあるcsvファイルを抽出したい場合”**再帰的な処理**“を行います！

再帰的な処理とは同じ処理を繰り返すという意味です！

今回の場合、globではディレクトリの中で条件に合うファイルを抽出してリストに格納するという処理をしています！

その処理を今のディレクトリの下のディレクトリでも繰り返し実施し、<mark>最も深い階層にあるファイルやディレクトリまで検索することが再帰的処理になります！</mark>

説明だけだと難しいので、実際にやってみましょう！

まずはtrainフォルダの中にあるcsvファイルをすべて抽出します！

```python
file_recursive = glob.glob("train/**/*.csv", recursive=True)
```

「\*\*」を使うことで、条件のpathを起点(今回はtrain)に下の階層まで条件のファイルがないか検索してくれます！

その時、<mark>「**recursive=True**」として再帰的な検索を有効にすることを忘れずに！</mark>

```python
print(file_recursive)
>>['train/43.csv', 'train/16.csv', 'train/20.csv', 'train/47.csv', 'train/31.csv', 'train/01.csv', 'train/10.csv', 'train/39.csv', 'train/09.csv', 'train/36.csv', 'train/25.csv', 'train/44.csv', 'train/11.csv', 'train/23.csv', 'train/14.csv', 'train/17.csv', 'train/04.csv', 'train/38.csv', 'train/26.csv', 'train/06.csv', 'train/21.csv', 'train/07.csv', 'train/29.csv', 'train/13.csv', 'train/27.csv', 'train/28.csv', 'train/02.csv', 'train/19.csv', 'train/22.csv', 'train/46.csv', 'train/34.csv', 'train/18.csv', 'train/35.csv', 'train/32.csv', 'train/37.csv', 'train/08.csv', 'train/24.csv', 'train/42.csv', 'train/05.csv', 'train/12.csv', 'train/30.csv', 'train/45.csv', 'train/03.csv', 'train/15.csv', 'train/40.csv', 'train/33.csv', 'train/41.csv', 'train/train2/98.csv', 'train/train2/99.csv', 'train/train2/97.csv']
```

file_recursiveを見てみると、すべてのファイルがリスト形式で格納されていますね！

最後に「trainフォルダ」と「testファイル」の中から「a.csvファイル」と「1の位が9のファイル」を抽出してみます！

```python
files_ex = glob.glob("**/*[a,9].csv", recursive=True)
print(files_ex)
>>['train/39.csv', 'train/09.csv', 'train/29.csv', 'train/19.csv', 'train/train2/99.csv', 'test/a.csv']
```

別のフォルダのデータもしっかり抽出できますね！

:::talk{who="umatan"}
ここまで出来れば大丈夫！globを使って自分の好きなようにデータを抽出していこう！
:::

## glob使い方まとめ

ここまでで、globとはから使い方まで解説していきました！

globを使い、**ワイルドカード**や**再帰的な処理**を利用することで<mark>複数のファイルを抽出できました！</mark>

:::talk{who="robotan"}
毎回ファイル名を指定しなきゃいけないと思ってたけど、これは便利だな！
:::

:::talk{who="umatan"}
作業効率も格段に上がるから、ぜひ使ってみてね！
:::

「globの使い方はわかったけど、これをどう場面で使うの？」と思った方はぜひ以下の講座を受講してみてください！

[![Udemy-course](/wp-content/uploads/2020/04/Udemy-me-min-1024x543.jpg)](https://www.udemy.com/course/python-data/?referralCode=06466D9A805A034B1A97)

実際のデータ分析の流れを解説していて、実戦でglobがどのように使われているのか参考になります！

また、Pythonを使ってデータ分析や機械学習を学びたい！という方には当メディアが運営するAIデータサイエンス特化スクールの「[スタアカ（スタビジアカデミー）](https://toukei-lab.com/achademy/)」がオススメです！

:::box
**AIデータサイエンス特化スクール「スタアカ」**

![スタアカ（スタビジアカデミー）のトップページ](/wp-content/uploads/2026/10/achademy-top.jpg)
:::

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1,280円/月（全コースが受講し放題）<br>
プレミアムプラン：129,800円（通常149,800円・買い切り）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>統計学・機械学習・ディープラーニングを網羅的に学ぶ<br>
生成AI（LLM・RAG・プロンプトエンジニアリング）を学ぶ<br>
SQLとPythonを組み合わせて実データを使った様々なワークを行う<br>
実践的なビジネスフレームワークを学ぶ<br>
マーケティングの実行プラン策定</td>
</tr>
</tbody>
</table>

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「[スタアカ](https://toukei-lab.com/achademy/)」！！

当メディアが運営するスクールです。

月額1,280円のライトプランで、統計学から機械学習・生成AIまで全コースが受講し放題です！

<mark>プレミアムプランでは、24時間以内の質問対応と現役データサイエンティストとの1on1（30分×4回）を実施します！</mark>

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください！

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

<mark>そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコース</mark>になっています！

Pythonが初めての人でも学べるようなカリキュラムにしておりますので是非チェックしてみてください！

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます！

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定**\
**・生成AIのAPIを使ってチャットボットやAIエージェントを作る**
:::

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/" note="＼今すぐ試す／"}

また、Pythonで出来ることを知りたい場合は以下の記事でまとめていますので是非チェックしてみてください！

<https://toukei-lab.com/python-can>