はじめに
業務の自動化を進めるにあたってglob
を使用してファイルのパスを得る方法をまとめる。
環境
python 3.7.8
window 10
Code
特定のパスに属するファイル
文字の長さに関係なく、文字を含む場合は*
をつける
import glob
## listとして結果を得る
file_list =glob.glob(r'C:\Users\junsa\Desktop\paison\*.py')
print(file_list)
# ['C:\\Users\\junsa\\Desktop\\paison\\labo.py', 'C:\\Users\\junsa\\Desktop\\paison\\9abo.py']
## 下位フォルダも含めたファイルを探す
file_list =glob.glob(r'C:\Users\junsa\Desktop\paison\**\*.py', recursive=True)
print(file_list)
# ['C:\\Users\\junsa\\Desktop\\paison\\labo.py', 'C:\\Users\\junsa\\Desktop\\paison\\9abo.py', 'C:\\Users\\junsa\\Desktop\\paison\\paison2\\labo1234.py']
特定の一文字を含むファイル: []
[]
で囲む一文列の中の一文字を含むファイルを探す。
[0-9]
なら0から9までの数字のそれか一文字、[a-z]ならaからzまでの一文字を含むファイルを探す。
import glob
file_list =glob.glob(r'C:\Users\junsa\Desktop\paison\[a-z]abo.py')
print(file_list)
# ['C:\\Users\\junsa\\Desktop\\paison\\labo.py']
file_list =glob.glob(r'C:\Users\junsa\Desktop\paison\[0-9]abo.py')
print(file_list)
# ['C:\\Users\\junsa\\Desktop\\paison\\9abo.py']
任意の一文字を含むファイル: ?
?
は任意の一文字として扱われる。
ファイル名が3文字のファイルをすべて探したい場合:???.*
ファイル名の頭にtを含む3文字のテキストファイルを探したい場合:t??.txt
import glob
file_list =glob.glob(r'C:\Users\junsa\Desktop\paison\????.py')
print(file_list)
# ['C:\\Users\\junsa\\Desktop\\paison\\9abo.py', 'C:\\Users\\junsa\\Desktop\\paison\\labo.py']
file_list =glob.glob(r'C:\Users\junsa\Desktop\paison\l???.py')
print(file_list)
# ['C:\\Users\\junsa\\Desktop\\paison\\labo.py']
まとめ
os
も一緒に使用することによってほとんどのファイル処理はできると思う。