Eliminar un directorio o archivo usando Python

En este artículo, cubriremos cómo eliminar (eliminar) archivos y directorios en Python . Python proporciona diferentes métodos y funciones para eliminar archivos y directorios. Uno puede eliminar el archivo de acuerdo a su necesidad. 

Varios métodos proporcionados por Python son:

Eliminar archivo/directorio usando el método os.remove()

El módulo OS en Python proporciona funciones para interactuar con el sistema operativo. Todas las funciones del módulo os generan OSError en el caso de rutas y nombres de archivos inválidos o inaccesibles, u otros argumentos que tienen el tipo correcto pero que el sistema operativo no acepta. 

El método os.remove() en Python se usa para eliminar o eliminar una ruta de archivo. Este método no puede eliminar ni eliminar un directorio . Si la ruta especificada es un directorio, el método generará OSError.

Sintaxis de os.remove()

Sintaxis: os.remove(ruta, *, dir_fd = Ninguno) 

Parámetro: 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. 

  • dir_fd (opcional): un descriptor de archivo que hace referencia a un directorio. El valor predeterminado de este parámetro es Ninguno. Si la ruta especificada es absoluta, se ignora dir_fd. 

Nota: El ‘*’ en la lista de parámetros indica que todos los parámetros siguientes (aquí, en nuestro caso, ‘dir_fd’) son parámetros de solo palabras clave y se pueden proporcionar usando su nombre, no como parámetro posicional. 

Tipo de devolución: este método no devuelve ningún valor.

Ejemplo 1: eliminar un archivo en Python

Supongamos que los archivos contenidos en la carpeta son: 

 

Queremos eliminar el archivo 1 de la carpeta anterior. A continuación se muestra la implementación. 

Python3

# Python program to explain os.remove() method
 
# importing os module
import os
 
# File name
file = 'file1.txt'
 
# File location
location = "D:/Pycharm projects/GeeksforGeeks/Authors/Nikhil/"
 
# Path
path = os.path.join(location, file)
 
# Remove the file
# 'file.txt'
os.remove(path)

Producción: 

 

Ejemplo 2: Eliminar archivo con ruta absoluta

Si la ruta especificada es un directorio. 

Python3

# Python program to explain os.remove() method
 
# importing os module
import os
 
# Directory name
dir = "Nikhil"
 
# Path
location = "D:/Pycharm projects/GeeksforGeeks/Authors/"
path = os.path.join(location, dir)
 
# Remove the specified
# file path
os.remove(path)
print("% s has been removed successfully" % dir)
 
# if the specified path
# is a directory then
# 'IsADirectoryError' error
# will raised
 
# Similarly if the specified
# file path does not exists or
# is invalid then corresponding
# OSError will be raised

Producción:

Traceback (most recent call last):
  File "osremove.py", line 11, in 
    os.remove(path)
IsADirectoryError: [Errno 21] Is a directory: 'D:/Pycharm projects/GeeksforGeeks/Authors/Nikhil'

Ejemplo 3: comprobar si el archivo existe antes de eliminarlo

Error de manejo al usar el método os.remove().

Python3

# Python program to explain os.remove() method
 
# importing os module
import os
 
# path
path = 'D:/Pycharm projects/GeeksforGeeks/Authors/Nikhil'
 
# Remove the specified
# file path
try:
    os.remove(path)
    print("% s removed successfully" % path)
except OSError as error:
    print(error)
    print("File path can not be removed")

Producción:

[Errno 21] Is a directory: 'D:/Pycharm projects/GeeksforGeeks/Authors/Nikhil'
File path can not be removed

Nota: Para saber más sobre os.remove() haga clic aquí .

Eliminación de archivo/directorio mediante el método os.rmdir()

El método os.rmdir() en Python se usa para eliminar o eliminar un directorio vacío. Se generará OSError si la ruta especificada no es un directorio vacío.

Sintaxis de os.rmdir()

Sintaxis: os.rmdir(ruta, *, dir_fd = Ninguno) 

Parámetro: 

  • 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. 
  • dir_fd (opcional): un descriptor de archivo que hace referencia a un directorio. El valor predeterminado de este parámetro es Ninguno. Si la ruta especificada es absoluta, se ignora dir_fd. 

Nota: El ‘*’ en la lista de parámetros indica que todos los parámetros siguientes (aquí, en nuestro caso, ‘dir_fd’) son parámetros de solo palabras clave y se pueden proporcionar usando su nombre, no como parámetro posicional. 

Tipo de devolución: este método no devuelve ningún valor.

Ejemplo 1: eliminar todos los directorios de un directorio

Supongamos que los directorios son: 

 

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

Python3

# importing os module
import os
 
# Directory name
directory = "Geeks"
 
# Parent Directory
parent = "D:/Pycharm projects/"
 
# Path
path = os.path.join(parent, directory)
 
# Remove the Directory
# "Geeks"
os.rmdir(path)

Producción: 

 

Ejemplo 2: Manejo de errores al eliminar un directorio

Manejo de errores al usar el método os.rmdir(), 

Python3

# Python program to explain os.rmdir() method
 
# importing os module
import os
 
# Directory name
directory = "GeeksforGeeks"
 
# Parent Directory
parent = "D:/Pycharm projects/"
 
# Path
path = os.path.join(parent, directory)
 
# Remove the Directory
# "GeeksforGeeks"
try:
    os.rmdir(path)
    print("Directory '% s' has been removed successfully" % directory)
except OSError as error:
    print(error)
    print("Directory '% s' can not be removed" % directory)
 
# if the specified path
# is not an empty directory
# then permission error will
# be raised
 
# similarly if specified path
# is invalid or is not a
# directory then corresponding
# OSError will be raised

Producción:

[WinError 145] The directory is not empty: 'D:/Pycharm projects/GeeksforGeeks'
Directory 'GeeksforGeeks' can not be removed

Nota: Para saber más sobre os.rmdir() haga clic aquí .

Eliminación de archivo/directorio mediante shutil.rmtree()

shutil.rmtree() se usa para eliminar un árbol de directorios completo, una ruta debe apuntar a un directorio (pero no un enlace simbólico a un directorio).

Sintaxis de shutil.rmtree()

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.

Eliminar un directorio y los archivos que contiene.

Ejemplo 1: 

Supongamos que el directorio y los subdirectorios son los siguientes.

 # Directorio de padres: 

 

 # Directorio dentro del directorio principal: 

 

# Archivo dentro del subdirectorio: 

 

Ejemplo: eliminar todos los archivos de un directorio

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: 

 

Ejemplo 2: ignorar el error al eliminar un directorio

Pasando ignore_errors = True. 

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: controlador de excepciones

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 provocó la excepción durante la eliminación
  • excinfo: información de excepción generada 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’), )

Eliminación de archivo/directorio mediante pathlib.Path(empty_dir_path).rmdir()

Un directorio vacío también se puede eliminar o eliminar utilizando el método rmdir() del módulo pathlib. Primero, tenemos que establecer la ruta del directorio y luego llamamos al método rmdir() en esa ruta.

Sintaxis de pathlib.Path

Sintaxis: pathlib.Path(empty_dir_path).rmdir()

Parámetro: 

  • empty_dir_path: un objeto similar a una ruta que representa una ruta de directorio vacía. Un objeto similar a una ruta es una string o un objeto de bytes que representa una ruta. 

Tipo de devolución: este método no devuelve ningún valor.

Ejemplo: eliminar un directorio vacío usando rmdir()

En este ejemplo, eliminaremos una carpeta vacía, solo necesitamos especificar el nombre de la carpeta si está en el directorio raíz

Python3

import pathlib
 
# Deleting an empty folder
# Put your file address
empty_dir = r"Untitled Folder"
path = pathlib.Path(empty_dir).rmdir()
print("Deleted '%s' successfully" % empty_dir)

Producción:

Deleted 'Untitled Folder' successfully

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 *