#!/usr/bin/env python3
# ディレクトリ内のファイルが特定の拡張子のみか確認
import glob
import re
import os
def is_only_ext(target_dir, ext):
# ファイルのみの一覧を取得
files = [p for p in glob.glob(target_dir) if os.path.isfile(p)]
# ファイルの件数が0の場合
if len(files) == 0:
return False
# ファイルの一覧の拡張子を個別に確認
for e in files:
if not re.search(ext, e, re.IGNORECASE):
# print(e)
return False
# 真を返す
return True
# ディレクトリ
target_dir = "H:\Pictures\**"
#target_dir = "/var/share/**"
# 拡張子(正規表現)
ext = "\.(jp(e)?g|gif|bmp|png)$"
# 再帰的にサブディレクトリの一覧を取得
dirs = [p for p in glob.glob(target_dir, recursive=True) if os.path.isdir(p)]
for d in dirs:
dd = glob.escape(d) + os.path.sep + "*"
if is_only_ext(dd, ext):
print("{0}".format(d))
exit(0)
glob.escape()
はPathに[]
などが含まれているとglobが失敗しますのでエスケープしています。
コメント