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