[Python] 指定したディレクトリ内の空ディレクトリを全て削除する

空のディレクトリを削除する方法自体はググればたくさん見つかりますが、指定したディレクトリ内を再帰的に検索して空のディレクトリを削除する方法が見つからなかったので実装してみました。

もっと他に良いやり方はあるかもしれせんが・・・。

サンプルコード

/hoge 内の空ディレクトリを削除するサンプルコードです。

target_dir = '/hoge'
dirs = glob.glob(f'{target_dir}/**/', recursive=True)
print(f'{len(dirs)} dirs exist')

cnt = 0
for dir in dirs:
    try:
        os.removedirs(dir)
        print(f'Removed dir: {dir}')
        cnt += 1
    except OSError:
        pass
if cnt > 0:
    print(f'Removed {cnt} dirs')

ディレクト一覧の取得は glob で行います。
再帰的に取得するため recursive=True を指定します。

ディレクトリの削除は os.removedirs で行います。
空のディレクトリを削除し、その結果親ディレクトリも空になればそちらも削除してくれます。
ディレクトリが空でなかった場合は OSError になります。

参考 URL

Hugo で構築されています。
テーマ StackJimmy によって設計されています。