同一ディレクトリ内にあるファイルのリストの取得には、__globモジュール__が便利です。
#glob モジュールの使用例
下記のファイルが保存されているディレクトリで、globを動かしてみます。
data1.txt, data10.txt, data2.txt, data3.dat, data99.txt, result1.txt, result2.dat
######・ワイルドーカードを用いる
以下の処理で、同一ディレクトリ内にあるすべてのファイルのリストを取得できます。
import glob
filelist=glob.glob('*')
print(filelist)
実行結果
['data1.txt', 'data10.txt', 'data2.txt', 'data3.dat', 'data99.txt', 'result1.txt', 'result2.dat']
ワイルドカード'*'を用いれば、特定の条件を満たすファイル名のみをリストアップできます。以下の例では、ファイル名が'data'ではじまるもの、拡張子が'.txt'であるものをそれぞれリストアップしています。
filelist=glob.glob('data*') #'data'ではじまるファイル名をすべてリストアップ
print(filelist)
filelist=glob.glob('*.txt') #'.txt'で終わるファイル名をすべてリストアップ
print(filelist)
実行結果
['data1.txt', 'data10.txt', 'data2.txt', 'data3.dat', 'data99.txt']
['data1.txt', 'data10.txt', 'data2.txt', 'data99.txt', 'result1.txt']
######・'?'を用いる
ワイルドカード部分の文字数を指定したい場合は、'*'の代わりに'?'を用います。'?'は、指定したい文字数の分だけつなげます。以下の例では、'data'と'.txt'の間に任意の2文字が入っているファイルをリストアップできます。
filelist=glob.glob('data??.txt') #'data'と'.txt'の間に任意の2文字が入るファイルをすべてリストアップ
print(filelist)
実行結果
['data10.txt', 'data99.txt']
######・[ ] を用いる
[ ]を用いることもできます。この場合、[ ]で囲んだ部分が、[ ]内の英数字のどれか1文字に合致するファイルがリストアップされます。
filelist=glob.glob('data[0-9].txt') #[0-9]の部分に0~9のいずれかの数字が入るものをすべてリストアップ
print(filelist)
実行結果
['data1.txt', 'data2.txt']