Data Science|Basics

【初心者向け】Pythonのglobを徹底解説!正規表現の書き方も説明

「pythonのglobの使い方がわからなくてつまずいている。参考書にも詳しく載っていない、誰かちゃんと教えて!」

本記事ではこのような悩みを解決します。

pythonのglobの使い方は難しく、初心者がつまずきがちなポイントです。しかしglobは使いこなせればかなり便利な関数です。globの使い方を覚えるだけでpythonでのファイル操作が楽になりますよ。

そこで本記事では初心者でもわかるようにglobの使い方を解説します。globの基本的な使い方や実践的な使い方を詳しく説明しているので、ぜひご覧ください。
また、初心者が混乱しがちな正規表現の書き方についてもまとめました。

python初心者の方はぜひこの機会にglobの使い方をマスターしてしまいましょう!


本ブログを運営しているTech Teacherは、業界初のプログラミング家庭教師サービスを提供しています。

その特徴は完全マンツーマン・フルオーダーメイド指導・30分ごとの利用が可能であるところです。

完全マンツーマン

Tech Teacherのマンツーマン指導なら理解できない箇所は何度も分かるまで説明を受けることができます。

フルオーダーメイド指導

Tech Teacherではあらかじめ決められたカリキュラムはありません。そのためご自身の学習状況や学びたいことに合わせた指導が可能です。

一括支払いなし

一般的なプログラミングスクールの料金体制はカリキュラムに対して一括払いですが、Tech Teacherでは利用した分だけの支払いとなります。そのため、大きな費用負担がなく気軽に始めることができます。

Pythonをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

pythonにおけるglobとは

まずは「そもそもglobってなに?」という点を説明します。
なぜこのような関数が必要となるのか、その理由を押さえておきましょう。

globの基本となるところなので、しっかり理解しておくようにしましょう。

globとは何か

globは、pythonのモジュールの1つです。また、globモジュールの中にある同名の関数glob()も指します。

globとは英語で「かたまり」という意味があります。pythonでは、glob関数を使うことで特定のパターンにマッチするファイルを取得することができます。特定のファイルの「かたまり」を取得する、というイメージで覚えておきましょう。

glob関数にファイルのマッチング条件を引数として与えると、その条件にマッチしたファイルを返してくれます。ファイルを取得すると、そのファイルのみを開いて、プログラム内で扱えるようになります。
マッチング条件の書き方については、この記事で詳しく解説していきますよ。

このように、特定条件に従ったファイルを取得するときにglobを使います。

globの実践方法・具体例

ここでは、globの実践方法について解説していきます。

実際にglobを使ったプログラムを作成して、ファイルを取得してみましょう。

さらに、再帰処理を使って、1つの上の階層のファイルを取得する方法も説明してあります。こちらは少し難しいですが、理解しておくと役立ちますよ。

テストファイルの準備

globを使う前に、まずはテスト用のファイルとディレクトリを準備しましょう。

まず、pythonファイルを保存するディレクトリに「test」ディレクトリを作ってください。そしてtestディレクトリの中に、以下の4つのファイルを作成します。

aaa.txt
bbb.txt
ccc.txt
ddd.text

さらに、testディレクトリの中に「test2」ディレクトリを作ってください。そしてtest2ディレクトリの中に「eee.txt」ファイルを作成します。
なお、ファイルの中身は空っぽで構いません。

作成例がこちらです。

これでglobを使う準備は完了しました。

これからglobを使って、作成したファイルを取得していきます。

globの基本的な使い方

それではglobの基本的な使い方を紹介します。

まずは「test」ディレクトリの中にあるファイルを取得していきます。
pythonファイルを作成し、次のようなソースを記述してください。

import glob
import re
import os

file = glob.glob(‘test/*.txt’)

print(file)

◯実行結果

Documents $ 1python test.py
[’test/ccc.txt’,’test/bbb.txt’,’test/aaa.txt’]/strong>
Documents $ 1

glob関数を使うためには、globモジュールを始めとして、いくつかのライブラリをimportする必要があります。冒頭のimport文のところは忘れずに記入しましょう。

記述したらファイルを保存して、プログラムを実行してみましょう。すると実行結果のように表示されるはずです。testディレクトリの中にある3つの.txtファイルが出力されました。

このプログラムでは、glob関数の引数として文字列「test/*.txt」を渡しています。これは、「testディレクトリの中にある「*.txt」というパターンに一致するファイルを取得する」という意味になります。

「*」はワイルドカード文字と呼ばれるもので「任意の文字列」を表します。結局、上記の場合、「testディレクトリの中にある拡張子.txtのファイルを取得」していることになります。ここでは、aaa.txt、bbb.txt、ccc.txtの3つがパターンに一致することになりますね。

「ddd.text」はこのパターンに合致していないので、ここでは表示されません。ddd.textを取得したい場合には次のように記述する必要があります。

import glob
import re
import os

file = glob.glob(‘test/*.text’)

print(file)

◯実行結果

Documents $ 1python test.py
[’test/ddd.text’]
Documents $ 1

すると今度は「ddd.text」のみが取得できるようになりました。

パターンの内容をglob関数内に書いて、そのパターンに一致するファイルを取得してくる。これがglobの基本的な使い方です。

ファイル名のみ取得する

先ほどの例ではファイル名と一緒にディレクトリ名も取得していました。
ではファイル名のみを取得したい場合はどうすればよいでしょうか?

その場合は、os.path.split関数を使って、ディレクトリ名とファイル名を分けるのがオススメのやり方です。
os.path.split関数は、ファイルのパスを与えるとディレクトリ名とファイル名に分割してくれる関数です。

次の例を見てください。

import glob
import re
import os

file = glob.glob(‘test/*.txt’)

print(os.path.split(f)[1])

◯実行結果

Documents $ 1python test.py
[’test/ddd.text’]
Documents $ 1

このように、os.path.split(ファイルを格納した変数名)[1]と記述することでファイル名のみを取得できます。

なお、os.path.split(f)[0]と記述するとディレクトリ名のみを取得できます。

この方法ならファイル名だけを出力させることができます。実際のコーディングではよく使うので覚えておきましょう。

正規表現について

先ほど、glob関数の引数に「test/*.txt」を渡しましたよね。

ここでの「*」は正規表現と呼ばれる書き方の1つです。正規表現とは、文字列のパターンを表現する表記法のことであり、glob関数内でも使うことができます。

たとえば「*」は「文字列が0回以上繰り返される」パターンに合致します。

正規表現には他にもたくさんの書き方があります。
たとえば「^」は行の先頭を意味する正規表現です。「^a」と書くと、これは「行の先頭がaから始まる」パターンに合致します。
他にも「$」というものがあり、こちらは行の末尾を意味する正規表現です。「t$」と書くと、これは「行の末尾がtで終わる」パターンに合致します。

正規表現は他にもたくさんの種類があります。代表的な正規表現を下にまとめました。

◯代表的な正規表現の例

正規表現 意味 使用例
* 何かしらの文字列が0回以上繰り返される *.txt
+ 何らかの文字列が1回以上繰り返される +.txt
? 何らかの文字が0回もしくは1回表示される ?.txt
{a} 何らかの文字列がa回繰り返される {3}.txt
{a,b} 何らかの文字列がa~b回繰り返される {1,3}.txt
^ 行の先頭 ^a
$ 行の末尾 t$

初心者の方は全部を一気に覚える必要はありません。pythonを勉強していく中で、必要に応じて少しずつ覚えていくようにしましょう。

1つの上の階層のファイルを取得する

pythonはバージョン3.5から「**」という正規表現が使えるようになりました。
「**」とglobを組み合わせることによって、1つの上の階層のファイルも簡単に取得ができます。

「*」だと同一階層のファイルしか取得ができません。今の例で言えば、testディレクトリのファイルは取得できても、test2ディレクトリのファイルは取得できないのです。

以下では、「**」を使ってtest2ディレクトリにある「eee.txt」を取得していきます。pythonファイルに次のように記述してください。

import glob
import re
import os

file = print(glob.glob(‘test/**/*.txt’, recursive=True))

print(file)

◯実行結果

Documents $ 1python test.py
[’test/ccc.txt’,test/bbb.txt’,’test/test2/eee.txt’]
None

Documents $ 1

print(file)

ここで、glob関数の第2引数に「recursive=True」と記述する必要があることに注意してください。
recursiveとは英語で「再帰的」という意味です。「recursive=True」と記述することで、ファイルを再帰的に探すことができるようになります。再帰処理とは、自分自身を呼び出す処理という意味です。

上記の例では「test/**/*.txt」というパターンに合致したファイルを取得しています。「**」を使うことで、testディレクトリの中のファイルとtest2ディレクトリの中のファイルの両方を取得できるようにしています。

このように、「**」を使うことで同一階層以外のファイルも探すことが可能です。この書き方が必要となることもあるので、覚えておくと良いですよ。

「Tech Teacherで!~家庭教師ならではの3つの魅力~」

本Blogを運営するプログラミング家庭教師Tech Teacherは以下のような疑問をすべて解決できるサービスです。

・Pythonの応用をもっと学びたいが、値段が高いスクールに通うのは気が引ける

・目的別に短時間の利用ができるサービスがあったらいいな

比較対象 Tech Teacher プログラミングスクールA社
受講形態
1対1

1対3~5
担当教師
担任教師
×
講座別の講師
カリキュラム
自分専用指導

全員指導
仕事・学業との両立
可能
×
不可能
メンター制度
担任教師

異なる担当
料金
授業分だけ
×
一括払い
初期費用
入会金
22,000円
×
一括払い
528,000円
シミュレーション
(3ヶ月90分の指導を週1で行う)

164,500円
×
528,000円

以下、Tech Teacherの3つの魅力を紹介します。

Pythonをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

1.効率的な学習スタイル

一人のためだけの指導~1対1の完全個別指導~

一般的なプログラミングスクールでは大人数の対面講義や、録画講義の視聴またはオンラインでの受講がメインです。そうなると学習しながら生じた疑問をすぐに聞くことができずに、先に進んでしまい内容をうまく理解できなかったり、作業がうまく進まなかったりします。

家庭教師であれば、マンツーマンのため自分の課題にだけ焦点を当てて指導を受けられるので、1回の授業を濃い時間にすることができます。

無駄のない学習~フルオーダーメイド~

Tech Teacherは一般的なプログラミングスクールと異なり、あらかじめ決められたコースやカリキュラム設定がありません。
一般的なプログラミングスクールのカリキュラムでは、自分が本当に学習したいことを学ぶのにいくつか他の講義を受けなければなりません

Tech Teacherでは生徒様の現状の習熟度・目的・期間に応じてお悩みにダイレクトに刺さる授業を展開し、最短で目標となるゴールを目指せます。

2.自分のペースで学習できる

必要な分だけ~従量課金モデル~

Tech Teacherでは、他にはない「短時間(30分ごと)」の利用が可能です!勉強していてちょっとわからないところ、プログラミング学習のモチベーション維持など様々な疑問や悩みを解決することができます。
授業を受けた分だけ後払いする料金体系(3,960円〜 / 30分)のため、必要な期間に必要な分だけ受講できます。

好きな時間で~相性のいい教師の紹介~

Tech Teacherではあらゆるニーズに対応できる教師陣がいるため、生徒様の希望条件に最適な教師を紹介します。

Tech Teacherを受講している方のほとんどが仕事をしている社会人の方です。TechTeacherの家庭教師なら受講日時や回数を、生徒様のご都合に合わせて柔軟に調整することができ、スキルだけでなく都合の良い時間で指導できる教師を選べます。

3.確実に身につく

挫折しない~担任教師の継続指導~

オンライン・オンデマンドの講義の視聴形態だと、学習に対するモチベーションの維持が課題となり、当初の予定よりも受講期間が伸びたり、挫折したりする恐れがあります。

Tech Teacherでは、担任教師が生徒と二人三脚で学習をするため、学習が大変なときも寄り添ったサポートを受けられます。

具体的には学習計画の管理や受講目的を明確にした上で中間目標を設定し、それに向けた学習の指導をすることでモチベーションの維持を図ります。

いつでも質問できる~チャットサポート(オプション)~

担当教師は授業の時間以外に、チャットサービスを利用して、自分で学習しているときに生じた疑問をすぐに質問して解決することができます。

Javaをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

Tech Teacherへのお問い合わせ

質問のみのお問い合わせも受け付けております。

まとめ

本記事ではPythonのglobについて解説しました。
globを使うことでファイルの取得が簡単に行えることがお分かりいただけたでしょうか?

また、本記事では正規表現の書き方についても説明しました。
正規表現はpythonのみならず他のプログラミング言語でも使われるものです。最初のうちは慣れないと思いますが、慣れてくるととても便利になります。

ぜひ本記事を参考にしてglobの使い方や正規表現をマスターしましょう。

このブログでは他にも様々なPythonの関数について解説しています。ぜひご覧ください!

Pythonの出力関数printの要点をつかむ!基礎〜応用まで徹底解説Pythonを学習し始めたばかりの方で、print関数についてつまずいてしまう人も少なからずいるでしょう。 「Pythonのp...
マスターしよう!Pythonでimportを使う方法について徹底解説!Pythonを学習し始めたばかりの人で「import」につまずいている人もいることでしょう。 そこで今回は import...

https://www.tech-teacher.jp/blog/python-function/

本記事が初心者の方がpythonを理解する助けになれば幸いです。