空のディレクトリを削除する方法自体はググればたくさん見つかりますが、指定したディレクトリ内を再帰的に検索して空のディレクトリを削除する方法が見つからなかったので実装してみました。
もっと他に良いやり方はあるかもしれせんが・・・。
サンプルコード
/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
になります。