Удалить несколько каталогов в Python

В python я понимаю, что могу удалить несколько файлов с одинаковым именем, используя следующую команду, например:

for f in glob.glob("file_name_*.txt"):
    os.remove(f)

И что один каталог может быть удален с shutil.rmtree('/path/to/dir') - и что эта команда удалит каталог, даже если каталог не пустой. С другой стороны, os.rmdir() необходимо, чтобы каталог был пустым.

Я на самом деле хочу удалить несколько каталогов с одним и тем же именем, и они не пусты. Итак, я ищу что-то вроде shutil.rmtree('directory_*')

Есть ли способ сделать это с помощью Python?

1 ответ

Решение

У вас есть все части: glob() повторяется, и rmtree() удаляет:

for path in glob.glob("directory_*"):
    shutil.rmtree(path)

Это бросит OSError если один из шаровых путей называет файл, или по любой другой причине, rmtree() может потерпеть неудачу. Вы можете добавить обработку ошибок по своему усмотрению, как только решите, как вы хотите обрабатывать ошибки. Не имеет смысла добавлять обработку ошибок, если вы не знаете, что вы хотите сделать с ошибкой, поэтому я оставил обработку ошибок без нее.

Другие вопросы по тегам