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:
- Usando os.remove()
- Usando os.rmdir()
- Usando shutil.rmtree()
- Usando pathlib.Path(empty_dir_path).rmdir()
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