Чтобы удалить папку в Python (мы будем рассматривать не пустые папки), можно использовать модуль shutil. Этот модуль предоставляет функции для копирования и удаления файлов и каталогов.
ВНИМАНИЕ! В этом руководстве показано, как удалить файлы и каталоги навсегда. Убедитесь, что вы совершенно точно прописали пути к файлам, которые вы хотите удалить.
Чтобы удалить каталог и все его содержимое, включая любые подкаталоги и файлы, вы можете использовать функцию rmtree. Например:
import shutil # Замените путь на путь к каталогу, который вы хотите удалить directory = '/path/to/directory' shutil.rmtree(directory)
Это удалит каталог и все его содержимое, включая любые подкаталоги и файлы. Обратите внимание, что при таком подходе не удаляются файлы, доступные только для чтения! Вместо этого вы увидите ошибку.
Давайте рассмотрим несколько альтернативных подходов к удалению непустых папок с помощью Python.
Как удалить папку в Python
1. Функция os.walk
Чтобы удалить папку в Python, вы можете удалить файлы по отдельности с помощью функции os.walk.
Вот как это выглядит в коде:
import os
# Укажите путь к каталогу, который вы хотите удалить
directory = '/path/to/directory'
# Используйте os.walk для обхода дерева каталогов
for root, dirs, files in os.walk(directory):
# Для каждого файла в каталоге
for file in files:
# Постройте полный путь к файлу
file_path = os.path.join(root, file)
# Удалите файл
os.remove(file_path)
# Для каждого подкаталога в директории
for dir in dirs:
# Постройте полный путь к подкаталогу
dir_path = os.path.join(root, dir)
# Удалите подкаталог
os.rmdir(dir_path)
# Удалите каталог верхнего уровня
os.rmdir(directory)
В этом коде для обхода дерева каталогов и удаления каждого файла и подкаталога в указанном каталоге используется функция os.walk. После удаления всех файлов и подкаталогов удаляется и каталог верхнего уровня.
2. Модуль pathlib
Чтобы удалить папку в Python с помощью модуля pathlib, вы можете использовать следующий код:
import pathlib
# Рекурсивная функция для удаления папки
def del_folder(path):
for sub in path.iterdir():
if sub.is_dir():
# Удалить каталог, если он является подкаталогом
del_folder(sub)
else :
# Удалить файл, если это файл:
sub.unlink()
# Удалить папку верхнего уровня:
path.rmdir()
# Пример использования
del_folder(pathlib.Path('path/to/folder'))
В этом коде для обхода дерева каталогов и удаления каждого файла и подкаталога в указанном каталоге используется функция iterdir. После удаления всех файлов и подкаталогов удаляется и каталог верхнего уровня.
Спасибо за внимание!
Перевод статьи Artturri Jalli «Python How to Delete a Non-Empty Folder [2022]».

Пингбэк: Как удалить файл в Python? - pythonturbo