Pythonでワイルドカードを活用してファイルリストを取得する方法を現役エンジニアが解説【初心者向け】

初心者向けにPythonでワイルドカードを活用してファイルリストを取得する方法について現役エンジニアが解説しています。ワイルドカードとは、文字列の指定や探索の際に、全ての文字、任意の1文字、文字列の範囲を指定する記号や記述方の事を指します。ワイルドカードには*や?や-があります。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

Pythonでワイルドカードを活用してファイルリストを取得する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプPython講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Pythonでワイルドカードを活用してファイルリストを取得する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

目次

 

ワイルドカードとは

ワイルドカードとは、文字列の指定や探索の際に、任意の文字を含む文字列のみ指定したり、特定のパターンに一致するものを指定する場合などに使用する記号や記述方の事を指します。

Pythonで使用できるワイルドカードには”*”,”?”,”[ – ]”などが存在します。

[PR] Pythonで挫折しない学習方法を動画で公開中

ワイルドカードの基本的な使い方

ここでは、代表的なワイルドカードの役割と使い方について紹介します。

[記号]

“*”

[役割]

任意の文字列を指定する事ができます。

[使い方]

例えば、” * ” のみで条件指定をした場合は全ての文字列が対象になり、” abc* “と条件指定した場合はabcから始まる文字列が対象になります。 また、” *abc* “と条件指定する事で、abcが含まれる文字列が対象になります。

 

[記号]

” ? ”

[役割]

任意の1文字を指定する事ができます。

[使い方]

例えば、” ? “のみを条件で指定した場合は、1文字のみで構成される文字列が対象になり、” abc??? “と条件指定した場合は、”abcdef”や”abc123″のように”abc”と3文字の文字列で構成される文字列が対象になります。

 

[記号]

” [ – ] ”

[役割]

[ – ]の範囲内に含まれる文字列を指定できます。

[使い方]

例えば” [0-9] “と条件を指定して使用しすると、0から9までの任意の数字1文字が対象になり、” [a-zA-Z] “と条件を指定すると任意の半角英字1文字が対象になります。

ワイルドカードを活用してファイルリストを取得する方法

Pythonでは、globモジュールを使用する事で、ワイルドカードを活用してファイルリストを取得することができます。

下記のような文法でglobモジュールを使ってファイルリストを取得する事ができます。

import glob
glob.glob('ファイルパス')

上記コードの’ファイルパス’をワイルドカードを使用したファイル名にすることで、現在のフォルダ内に存在する条件にマッチしたファイル名がリスト型で取得する事ができます。

実際に使ってみよう

それでは、Pythonでワイルドカードを活用してファイルリストを取得する方法についてサンプルコードを参考に、実際にファイルリストを取得してみましょう。

まずはじめに、こちらから検証に使用するファイル群をダウンロードして任意の場所に解凍します。

サンプルコード

import glob

# *を仕様してフォルダ内にある全てのファイル名を取得する
print('全てのファイルを取得')
print(glob.glob('*'))

# *を使用して"data1"+任意の文字列から始まるファイル名を取得
print('"data1"+任意の文字列から始まるファイル名を取得')
print(glob.glob('data1*'))

# ?を使用して"data"+任意の2文字から始まるファイル名を取得
print('"data"+任意の2文字から始まるファイル名を取得')
print(glob.glob('data??.txt'))

# [ - ]を使用して"data"+任意の半角英字1文字から始まるファイル名を取得
print('"data"+任意の半角英字1文字から始まるファイル名を取得')
print(glob.glob('data[a-zA-Z].txt'))

 

実行結果

全てのファイルを取得
['data.txt', 'data1.txt', 'data11.txt', 'data12.txt', 'data13.txt', 'data14.txt', 'data15.txt', 'data2.txt', 'data3.txt', 'data4.txt', 'data5.txt', 'dataA.txt', 'dataB.txt', 'dataC.txt', 'dataD.txt', 'dataE.txt', 'sample.py']

"data1"+任意の文字列から始まるファイル名を取得
['data1.txt', 'data11.txt', 'data12.txt', 'data13.txt', 'data14.txt', 'data15.txt']

"data"+任意の2文字から始まるファイル名を取得
['data11.txt', 'data12.txt', 'data13.txt', 'data14.txt', 'data15.txt']

"data"+任意の半角英字1文字から始まるファイル名を取得
['dataA.txt', 'dataB.txt', 'dataC.txt', 'dataD.txt', 'dataE.txt']

 

解説

コード5行目では、’ * ‘を使用して、すべてのファイル名を取得しています。

コード9行目では、’ * ‘を使用して、”data1″+任意の文字列から始まるファイル名を取得しています。

コード13行目では、’ ? ‘を使用して、”data”+任意の1文字から始まるファイル名を取得しています。

コード17行目では、’ [ – ] ‘を使用して、”data”+任意の半角英数字1文字から始まるファイル名を取得しています。

まとめ

今回は、Pythonでワイルドカードを活用してファイルリストを取得する方法について紹介しました。

Pythonを使ってファイル操作をするような場面で今回紹介した手法を組み合わせることで様々な処理ができるようになります。

また、ワイルドカードはファイル名取得以外にも様々な場面で使用する事があるので、今回紹介した内容を参考に理解を深めて下さい。

監修してくれたメンター

菅繕久(すがよしひこ)

現在はフリーランスのエンジニアをしていてプログラミング歴は8年目になります。

普段は Python、FileMaker等を使って様々な業務で活用できるIoTプロダクトRPAツールを作成しています。
開発実績としては、業務自動化ツール(在庫管理・発注・ファイル操作 etc)、電子カルテシステム、ロボット用プログラムなどがあります。
TechAcademyではPythonコースを担当しております。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間でPythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。