スポンサーリンク
glob.glob()でファイル検索
例えば、下記のディレクトリ構成があったとします。
$ tree dir1/ dir1/ ├── dir2 │ ├── file2.txt │ ├── file3.txt │ └── file4.txt ├── dir3 │ └── file5.txt └── file1.txt 2 directories, 5 files
globをimportして、glob()を実行するのも一つの手です。
下記は、ディレクトリを再帰的に検索して(recursive=True)、file5.txtを探しています。
ディレクトリの階層は問わないので、'**/file5.txt'と指定しています。
$ cat sample1.py #!/usr/bin/env python3 # coding: UTF-8 import glob matchPath = glob.glob('**/file5.txt', recursive=True) print(matchPath)
下記が実行結果になります。
$ ./sample1.py ['dir1/dir3/file5.txt']
スポンサーリンク
os.walk()でファイル検索
osをimportして、walk()を使うのも一つの手です
ただし、os.walk()の結果をforループ処理して取得したファイルに対して、if文でマッチ判定をしています。
参考:[Python]find -type fのようにサブディレクトリ以下のファイルを再帰的に参照
下記がサンプルコードになります。
先程と同様に、file5.txtを検索しています。
$ cat sample2.py #!/usr/bin/env python3 # coding: UTF-8 import os targetDirPath = './dir1' for dirPath, dirList, fileList in os.walk(targetDirPath): for fileName in fileList: if fileName == 'file5.txt': print(dirPath + "/" + fileName)
下記が実行結果になります。
$ ./sample2.py ./dir1/dir3/file5.txt
スポンサーリンク