更新:2023/03/19

python globのtips

目次

1. globについて

globは、あらかじめ指定したパターンにマッチングしたファイルやディレクトリのパス名をリストで取得することができるPython標準ライブラリです。

2. import

今回、あらかじめimportするライブラリを書きます。

import glob
import re

3. glob.glob()

3.1. ワイルドカード *

ワイルドカード「*」を使用すると、任意の長さの文字列(長さ0以上の文字列)を指定することができます。以下にその例を書きます。

files_d = glob.glob('d*') #先頭がdで始まるファイルまたはフォルダのリスト
print(files_d)
files_id = glob.glob('*d*') #dが含まれるファイルまたはフォルダのリスト
print(files_id)
files_txt=glob.glob('*.txt') #テキストファイル
print(files_txt)
files_ipynb=glob.glob('*.ipynb') #ipynb形式のファイル
print(files_ipynb)
files_si=glob.glob('*.i*') #拡張子の先頭がiで始まるファイル
print(files_si)

d*は、先頭がdで始まるファイルまたはフォルダにマッチします。*d*は、dが含まれるファイルまたはフォルダにマッチします。*.txtは、拡張子が.txtであるテキストファイルにマッチします。*.ipynbは、拡張子が.ipynbであるJupyter Notebookファイルにマッチします。*.i*は、拡張子の先頭がiで始まるファイルにマッチします。

このように、これらのパターンにマッチするファイルパスのリストが取得されます。

3.2. []を用いた特定の1文字

[]を用いたパターンマッチングは、指定した文字のいずれか1文字に一致するかどうかを判断することができます。以下は、[]を用いた特定の1文字に一致するパターンの例です。

files_d = glob.glob('[dnp]*') #先頭がdまたはnまたはpで始まるファイルまたはフォルダ
print(files_d)
files_ad = glob.glob('[a-d]*') #aからdまでのアルファベットから始まるファイルまたはフォルダ
print(files_id)
files_09 = glob.glob('[0-9]*') #0から9までの数字から始まるファイルまたはフォルダ
print(files_09)

上記のコードでは、[dnp]*は、先頭がd、n、またはpのファイルまたはフォルダ名に一致するパターンです。[a-d]*は、先頭がアルファベットaからdの範囲内のいずれかで始まるファイルまたはフォルダ名に一致するパターンです。[0-9]*は、先頭が数字0から9の範囲内のいずれかで始まるファイルまたはフォルダ名に一致するパターンです。

3.3. ?を用いた任意の1文字

?を用いたパターンマッチングは、任意の1文字に一致するかどうかを判断することができます。以下は、?を用いた任意の1文字に一致するパターンの例です。

files_d = glob.glob('??t?') #4文字の長さの名前で、3番目にtが来るファイル名
print(files_d)

上記のコードでは、??t?は、4文字の長さのファイルまたはフォルダ名で、3番目に文字tが来るパターンです。?は任意の1文字に一致するため、1番目、2番目、4番目の文字は任意の文字にマッチすることができます。

globと一緒にosというライブラリがよく使用されます。osについてもまとめたので、こちらの記事もぜひ読んでみて下さい。

3.3.1. python os の tips

PR