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 según sus necesidades.
Varios métodos proporcionados por Python son:
- Usando sistema operativo.remove()
- Usando os.rmdir()
- Usando Shutil.rmtree()
- Usando pathlib.Path(empty_dir_path).rmdir()
Eliminar archivo/dir usando el método os.remove()
módulo de sistema operativo en Python proporciona funciones para interactuar con el sistema operativo. Todas las funciones en el módulo del sistema operativo aumentan. OSError en el caso de nombres y rutas de archivos no válidos o inaccesibles, u otros argumentos que tengan el tipo correcto pero que no sean aceptados por el sistema operativo.
Método os.remove() en Python se utiliza para eliminar o eliminar una ruta de archivo. Este método no se puede eliminar o 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: camino: Un objeto similar a una ruta que representa la ruta de un archivo. Un objeto similar a una ruta es una cadena 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 palabras clave únicamente 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 el archivo contenido en la carpeta es:
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/techcodeview.com/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/techcodeview.com/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/techcodeview.com/Authors/Nikhil'>
Ejemplo 3: Compruebe 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/techcodeview.com/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/techcodeview.com/Authors/Nikhil' File path can not be removed>
Nota: Para saber más sobre os.remove() haga clic aquí.
Eliminar archivo/dir usando el método os.rmdir()
El método os.rmdir() en Python se utiliza para eliminar o eliminar un directorio vacío. OSError se generará 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 la ruta de un archivo. Un objeto similar a una ruta es una cadena 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 palabras clave únicamente 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>=> 'techcodeview.com'> # Parent Directory> parent>=> 'D:/Pycharm projects/'> # Path> path>=> os.path.join(parent, directory)> # Remove the Directory> # 'techcodeview.com'> 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/techcodeview.com' Directory 'techcodeview.com' can not be removed>
Nota: Para saber más sobre os.rmdir() haga clic aquí.
Eliminar archivo/dir usando el Shutil.rmtree()
Shutil.rmtree() se utiliza para eliminar un árbol de directorios completo; una ruta debe apuntar a un directorio (pero no un enlace simbólico a un directorio).
Sintaxis deshutil.rmtree()
Sintaxis: shutil.rmtree(ruta, ignore_errors=False,onerror=Ninguno)
Parámetros:
ruta: un objeto similar a una ruta que representa la ruta de un archivo. Un objeto similar a una ruta es una cadena 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. onerror: 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 Authors. A continuación se muestra la implementación.
Python3
más java
# Python program to demonstrate> # shutil.rmtree()> import> shutil> import> os> # location> location>=> 'D:/Pycharm projects/techcodeview.com/'> # 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/techcodeview.com/'> # 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 proyectos/gfg/gfg.py, línea 16, enshutil.rmtree(ruta, ignore_errors=False) Archivo C:UsersNikhil AggarwalAppDataLocalPrograms PythonPython38-32libshutil.py, línea 730, en rmtree devuelve _rmtree_unsafe(ruta, onerror) Archivo C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py , línea 589, en _rmtree_unsafe onerror(os.scandir, ruta, sys.exc_info()) Archivo C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.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 proyectos/techcodeview.com/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: nombre de la ruta pasada que generó 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/techcodeview.com/'> # 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'), )
Eliminar archivo/dir usando 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 para el directorio y luego llamamos al método rmdir() en esa ruta.
Sintaxis de pathlib.Path
Sintaxis: pathlib.Path(empty_dir_path).rmdir()
Parámetro:
vacía_dir_path: un objeto similar a una ruta que representa una ruta de directorio vacía. Un objeto similar a una ruta es una cadena 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>