Как удалить папку в Python

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

1 комментарий к “Как удалить папку в Python”

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

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

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