Удаление непустой папки с помощью Python

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *