Удаление папок в python рекурсивно

У меня проблема с удалением пустых каталогов. У меня такой код:

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 – это то, где я dir_to_search каталог, в котором работа должна быть недоступна. Этот каталог выглядит следующим образом:

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

Обратите внимание: все вышеперечисленные папки пусты. Когда я запускаю этот скрипт, удаляются только папки 20 , 25 ! Но папки 25 и 26 не удаляются, хотя это пустые папки.

Редактировать:

Исключением, которое я получаю, является:

 [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' 

Где я делаю ошибку.

Заранее спасибо.

5 Solutions collect form web for “Удаление папок в python рекурсивно”

Попробуйте модуль:

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

По умолчанию поведение os.walk() – это переход от корня к листу. Установите topdown=False в os.walk() чтобы перейти от листа к корню.

Попробуйте rmtree в shutil . в библиотеке python std

Команда (данная Томеком) не может удалить файл, если он только для чтения . поэтому, можно использовать –

 def del_evenReadonly(action, name, exc): os.chmod(name, stat.S_IWRITE) os.remove(name) if os.path.exists("test/qt_env"): shutil.rmtree('test/qt_env',onerror=del_evenReadonly) 

лучше использовать абсолютный путь и импортировать только функцию rmtree from shutil import rmtree поскольку это большой пакет, from shutil import rmtree выше строка будет импортировать только требуемую функцию.

 from shutil import rmtree rmtree('directory-absolute-path') 
  • Python не распознает каталоги os.path.isdir ()
  • второй новый файл python
  • Как использовать SimpleHTTPServer?
  • Ошибка при использовании listdir в Python
  • Итерация через каталоги с помощью Python
  • Найти текущий каталог и каталог файла
  • Python для отображения HTTP-файлов и каталогов
  • Как я могу добавить путь по умолчанию для поиска файлов сценариев python?
  • Python - лучший язык программирования в мире.