1. ホーム
  2. パイソン

[解決済み】pythonでフォルダを再帰的に削除する方法

2022-03-31 19:03:57

質問

空のディレクトリを削除するのに問題があります。以下は私のコードです。

for dirpath, dirnames, filenames in os.walk(dir_to_search):
    //other codes

    try:
        os.rmdir(dirpath)
    except OSError as ex:
        print(ex)

引数 dir_to_search は、作業を行う必要があるディレクトリを渡しているところです。そのディレクトリは次のようなものです。

test/20/...
test/22/...
test/25/...
test/26/...

なお、上記のフォルダーはすべて空です。このスクリプトを実行すると、フォルダー 20 , 25 だけが削除されます。しかし、フォルダの 2526 は、空のフォルダーであるにもかかわらず、削除されません。

編集する

取得している例外は

[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/29'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/29/tmp'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/28'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/28/tmp'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/26'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/25'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/27'
[Errno 39] Directory not empty: '/home/python-user/shell-scripts/s3logs/test/2012/10/27/tmp'

どこを間違えているのだろう?

どうすればいい?

試す shutil.rmtree :

import shutil
shutil.rmtree('/path/to/your/dir/')