

Чтобы удалить непустую папку в Python, можно использовать модуль shutil, который предоставляет функции для копирования и удаления файлов и каталогов.
ВНИМАНИЕ! В этом руководстве показано, как навсегда удалить файлы и каталоги. Убедитесь, что вы ввели пути к файлам правильно, чтобы быть на 100% уверенным, что удалите только те каталоги, которые хотите удалить.
Чтобы удалить каталог и все его содержимое, включая любые подкаталоги и файлы, можно воспользоваться функцией rmtree.
Например:
import shutil # Replace with the path to the directory you want to remove directory = '/path/to/directory' shutil.rmtree(directory)
Это приведет к удалению каталога и всего его содержимого, включая все подкаталоги и файлы. Обратите внимание, что этот подход не удаляет файлы, доступные только для чтения! Вместо этого вы увидите ошибку.
Давайте рассмотрим несколько альтернативных подходов к удалению непустых папок с помощью Python.
Альтернативные подходы
Функция os.walk()
Чтобы удалить непустую папку в Python, можно удалить файлы по отдельности с помощью функции os.walk.
Вот как это выглядит в коде:
import os
# Replace with the path to the directory you want to remove
directory = '/path/to/directory'
# Use os.walk to traverse the directory tree
for root, dirs, files in os.walk(directory):
# For each file in the directory
for file in files:
# Construct the full path to the file
file_path = os.path.join(root, file)
# Delete the file
os.remove(file_path)
# For each subdirectory in the directory
for dir in dirs:
# Construct the full path to the subdirectory
dir_path = os.path.join(root, dir)
# Delete the subdirectory
os.rmdir(dir_path)
# Delete the top-level directory
os.rmdir(directory)
Этот код использует функцию os.walk для перебора дерева каталогов и удаления каждого файла и подкаталога по указанному пути. После удаления всех файлов и подкаталогов удаляется и каталог верхнего уровня.
Модуль pathlib
Чтобы удалить непустую папку в Python с помощью модуля pathlib, вы можете использовать следующий код:
import pathlib
# A recursive function to remove the folder
def del_folder(path):
for sub in path.iterdir():
if sub.is_dir():
# Delete directory if it's a subdirectory
del_folder(sub)
else :
# Delete file if it is a file:
sub.unlink()
# This removes the top-level folder:
path.rmdir()
# Example use
del_folder(pathlib.Path('path/to/folder'))
Этот код использует метод iterdir для перебора дерева каталогов и удаления каждого файла и подкаталога в указанном каталоге. После удаления всех файлов и подкаталогов удаляется и каталог верхнего уровня.
Спасибо за прочтение. Счастливого кодинга!
Перевод статьи «Python How to Delete a Non-Empty Folder»
