Eliminar un árbol de directorios completo usando Python | método shutil.rmtree()

El módulo Shutil en Python proporciona muchas funciones de operaciones de alto nivel en archivos y colecciones de archivos. Viene bajo los módulos de utilidad estándar de Python. Este módulo ayuda a automatizar el proceso de copia y eliminación de archivos y directorios. 
shutil.rmtree() se usa para eliminar un árbol de directorios completo, la ruta debe apuntar a un directorio (pero no un enlace simbólico a un directorio).
 

Sintaxis: shutil.rmtree(ruta, ignore_errors=False, onerror=Ninguno)
Parámetros:  
ruta: Un objeto similar a una ruta que representa una ruta de archivo. Un objeto similar a una ruta es una string o un objeto de bytes que representa una ruta. 
ignore_errors: si ignore_errors es verdadero, se ignorarán los errores resultantes de eliminaciones fallidas. 
oneerror: si ignore_errors es falso o se omite, dichos errores se manejan llamando a un controlador especificado por onerror. 
 

Ejemplo 1: suponga que el directorio y los subdirectorios son los siguientes.
# Directorio de padres:
 

python shutil.rmtree()

# Directorio dentro del directorio principal:
 

python shutil.rmtree()

# Archivo dentro del subdirectorio:
 

python shutil.rmtree()

Queremos eliminar el directorio Autores. A continuación se muestra la implementación.
 

Python3

# Python program to demonstrate
# shutil.rmtree()
   
import shutil
import os
   
# location
location = "D:/Pycharm projects/GeeksforGeeks/"
   
# directory
dir = "Authors"
   
# path
path = os.path.join(location, dir)
   
# removing directory
shutil.rmtree(path)

Producción:
 

python shutil.rmtree()

Ejemplo 2: Pasando ignore_errors = False.
 

Python3

# Python program to demonstrate
# shutil.rmtree()
   
import shutil
import os
   
# location
location = "D:/Pycharm projects/GeeksforGeeks/"
   
# directory
dir = "Authors"
   
# path
path = os.path.join(location, dir)
   
# removing directory
shutil.rmtree(path, ignore_errors = False)
   
# making ignore_errors = True will not raise 
# a FileNotFoundError

Producción:
 

Rastreo (última llamada más reciente): 
Archivo “D:/Pycharm projects/gfg/gfg.py”, línea 16, en 
shutil.rmtree(ruta, ignore_errors=False) 
Archivo “C:\Users\Nikhil Aggarwal\AppData\Local \Programs\Python\Python38-32\lib\shutil.py”, línea 730, en rmtree 
return _rmtree_unsafe(path, onerror) 
File “C:\Users\Nikhil Aggarwal\AppData\Local\Programs\Python\Python38-32\ lib\shutil.py”, línea 589, en _rmtree_unsafe 
onerror(os.scandir, path, sys.exc_info()) 
Archivo “C:\Users\Nikhil Aggarwal\AppData\Local\Programs\Python\Python38-32\lib\ shutil.py”, línea 586, en _rmtree_unsafe 
con os.scandir(ruta) como scandir_it: 
FileNotFoundError: [WinError 3] El sistema no puede encontrar la ruta especificada: ‘D:/Pycharm projects/GeeksforGeeks/Authors’ 
 

Ejemplo 3: Al pasar onerror. 
En caso de error, se debe pasar una función que debe contener tres parámetros. 
 

  • función: función que generó la excepción. 
     
  • ruta: se pasó el nombre de la ruta que generó la excepción durante la eliminación 
     
  • excinfo: información de excepción planteada por sys.exc_info() 
     

A continuación se muestra la implementación.
 

Python3

# Python program to demonstrate
# shutil.rmtree()
   
import shutil
import os
   
   
# exception handler
def handler(func, path, exc_info):
    print("Inside handler")
    print(exc_info)
   
   
# location
location = "D:/Pycharm projects/GeeksforGeeks/"
   
# directory
dir = "Authors"
   
# path
path = os.path.join(location, dir)
   
# removing directory
shutil.rmtree(path, onerror = handler)

Producción:
 

Controlador interno (, FileNotFoundError 
(2, ‘El sistema no puede encontrar la ruta especificada’), )  Controlador interno (,
FileNotFoundError 
(2, ‘El sistema no puede encontrar el archivo especificado’), ) 
 

Publicación traducida automáticamente

Artículo escrito por nikhilaggarwal3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *