pythonファイルが特定の拡張子のみのディレクトリを検索する

python コンピュータ
私の所有ストレージ内で、画像ファイルのみのディレクトリは、大概zipに固め忘れたスキャン画像だったりします。
そんなディレクトリであるか判断するスクリプトをpythonで作ってみました。

#!/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が失敗しますのでエスケープしています。

コメント