Чтобы удалить непустую папку в 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”