Eliminar archivos y directorios en python ⋆ ALexHost SRL

Test your skills on our all Hosting services and get 15% off!

Use code at checkout:

Skills
11.11.2024

Eliminar archivos y directorios en python

Guía avanzada para eliminar archivos y directorios en Python

En Python, el manejo de archivos y directorios es una tarea común, especialmente para aplicaciones que requieren manipulación de archivos. Esta guía se centra en técnicas avanzadas para eliminar archivos y directorios utilizando varios módulos de Python, incluyendo os, shutil y pathlib. Cada uno de estos módulos proporciona diferentes funcionalidades para las operaciones del sistema de archivos, permitiéndote gestionar archivos y directorios de forma eficiente. Para descargar Python, accede al siguiente enlace de la fuente oficial python.org.

Comprender los módulos

1. El módulo os

El módulo os proporciona una forma de utilizar la funcionalidad dependiente del sistema operativo, como leer o escribir en el sistema de archivos. Incluye funciones para eliminar archivos y directorios. El uso del módulo os en un entorno de alojamiento VPS Linux proporciona un control eficiente sobre la gestión de archivos y otras operaciones a nivel de sistema. Este módulo permite a los desarrolladores realizar acciones como leer, escribir y eliminar archivos y directorios directamente en el servidor

Funciones clave:

  • os.remove(ruta): Elimina (borra) la ruta del fichero.
  • os.rmdir(ruta): Elimina (borra) la ruta del directorio. El directorio debe estar vacío.
  • os.unlink(ruta): Otro nombre para os.remove(), utilizado para eliminar un archivo.

2. El módulo shutil

El módulo shutil ofrece una interfaz de alto nivel para operaciones con ficheros. Es especialmente útil para copiar y eliminar directorios y archivos.

Funciones clave:

  • shutil.rmtree(ruta): Borra recursivamente un directorio y todo su contenido, incluyendo subdirectorios y ficheros.
  • shutil.move(src, dst): Mueve un archivo o directorio a otra ubicación, que también se puede utilizar para eliminar archivos moviéndolos a un directorio inexistente.

3. El módulo pathlib

El módulo pathlib proporciona un enfoque orientado a objetos para manejar las rutas del sistema de archivos. Este módulo se introdujo en Python 3.4 y se considera más intuitivo y legible.

Funciones clave:

  • Path.unlink(): Elimina un fichero.
  • Path.rmdir(): Elimina un directorio vacío.
  • Ruta.rmtree(): Para eliminar un directorio y su contenido, normalmente se utiliza shutil.rmtree() en combinación con Path.

Técnicas avanzadas para eliminar archivos y directorios

Uso del módulo os

A continuación se explica cómo utilizar el módulo os para eliminar archivos y directorios:

Opción A: Ejecutando en Python Interactivo

  1. Abra una sesión interactiva de Python escribiendo:
    python3

    (Usa python si así es como está configurado Python en tu sistema, pero generalmente, python3 es el comando recomendado para Python 3.x).

  2. Copie y pegue el código directamente en la sesión interactiva (script a continuación)

pción B: Escribir en un archivo de guión Python

  1. Cree un nuevo archivo utilizando un editor de texto, como nano:
    nano eliminar_archivo.py
  2. Copia y pega el siguiente código en el archivo (script de abajo)
  3. Ahora, puedes ejecutar tu script Python desde la terminal:
    python3 eliminar_archivo.py

Eliminar un único archivo

importar os
ruta_archivo = 'ejemplo.txt'
prueba:
os.remove(ruta_archivo)
print(f'Eliminado con éxito {ruta_archivo}')
excepto FileNotFoundError:
print(f'El archivo {ruta_archivo} no existe')
except PermissionError:
print(f'Permiso denegado: no se puede eliminar {ruta_archivo}')
excepto Exception como e:
print(f'Se ha producido un error: {e}')

Salida:

Eliminación de un directorio vacío

Paso 1: Crear el directorio

En primer lugar, cree un directorio vacío llamado ejemplo_dir. Puede hacerlo con el siguiente comando:

mkdir ejemplo_dir

Paso 2: Crear el script Python

Ahora, necesitarás crear un script Python que contenga el código para eliminar el directorio vacío. Puedes utilizar un editor de texto como nano para crear el script.

  1. Abre nano para crear un nuevo archivo Python:
    nano eliminar_directorio.py
  2. Copia y pega el siguiente código en el archivo (código de abajo)
  3. Ahora, ejecuta el script Python que acabas de crear:
    python3 eliminar_directorio.py

importar os
directorio_ruta = 'ejemplo_dir'
prueba:
os.rmdir(ruta_directorio)

f'Se ha eliminado correctamente el directorio {ruta_directorio}')
excepto FileNotFoundError:
print(f'El directorio {ruta_directorio} no existe')
except OSError:
print(f'El directorio {ruta_directorio} no está vacío')
excepto Exception como e:
print(f'Se ha producido un error: {e}')

Salida:

Utilización del módulo shutil

Paso 1: Crear un directorio con contenido

En primer lugar, cree un directorio llamado example_dir_with_content y añádale algunos archivos. Puede hacerlo con los siguientes comandos:

mkdir directorio_de_ejemplo_con_contenido
touch directorio_de_ejemplo_con_contenido/archivo1.txt
touch directorio_de_ejemplo_con_contenido/archivo2.txt

Paso 2: Crear el script Python

Ahora, necesitará crear un script Python que contenga el código para eliminar el directorio y su contenido. Puede utilizar un editor de texto como nano para crear el script.

  1. Abre nano para crear un nuevo archivo Python:
    nano eliminar_directorio_contenido.py
  2. Copia y pega el siguiente código en el archivo (código de abajo)
  3. Ahora, ejecuta el script Python que acabas de crear:
    python3 eliminar_directorio_contenido.py

Para eliminar directorios con contenido, utilice shutil.rmtree():

import shutil
'ejemplo_dir_con_contenido'
probar:
shutil.rmtree(ruta_directorio)
print(f'Eliminado con éxito el directorio {ruta_directorio} y su contenido')
except ErrorFicheroNoEncontrado:
print(f'El directorio {ruta_directorio} no existe')
except PermissionError:
print(f'Permiso denegado: no se puede eliminar {ruta_directorio}')
excepto Exception como e:
print(f'Se ha producido un error: {e}')

Salida:

Uso del módulo pathlib

pathlib proporciona una interfaz moderna para las rutas del sistema de archivos:

Eliminación de un archivo

from pathlib import Ruta
ruta_archivo = ruta('ejemplo.txt')
prueba:
ruta_archivo.unlink()
print(f'Eliminado con éxito {ruta_archivo}')
except ErrorFicheroNoEncontrado:
print(f'El fichero {ruta_fichero} no existe')
excepto PermissionError:
print(f'Permiso denegado: no se puede eliminar {ruta_archivo}')
excepto Exception como e:
print(f'Se ha producido un error: {e}')

Salida:

Eliminar un directorio vacío

from pathlib import Ruta_de_directorio = Ruta('ejemplo_dir'
probar:
directorio_ruta.rmdir() # Esto sólo funcionará si el directorio está vacío
print(f'Eliminado con éxito el directorio {ruta_directorio}')
except FileNotFoundError:
print(f'El directorio {ruta_directorio} no existe')
except OSError:
print(f'El directorio {ruta_directorio} no está vacío')
excepto Exception como e:
print(f'Se ha producido un error: {e}')

Salida:

Gestión de errores con elegancia

Cuando se trabaja con operaciones de archivo, es crucial manejar las excepciones con gracia para evitar que su programa se bloquee. Las excepciones más comunes son:

  • FileNotFoundError: Se produce cuando se intenta eliminar un archivo o directorio inexistente.
  • PermissionError: Se produce cuando el usuario carece de los permisos necesarios para eliminar un archivo o directorio.
  • OSError: Aparece cuando se producen varios errores relacionados con el sistema operativo, incluido el intento de eliminar un directorio que no está vacío.

Conclusión

En esta guía, hemos explorado cómo usar módulos de Python como os, shutil y pathlib para eliminar archivos y directorios. Cada módulo ofrece ventajas únicas, y entender cómo usarlos eficazmente mejorará tu capacidad para gestionar sistemas de archivos en tus aplicaciones. Dominando estas técnicas, podrás automatizar tareas de gestión de archivos, manejar archivos de forma más intuitiva y escribir scripts robustos que interactúen con el sistema de archivos.

Test your skills on our all Hosting services and get 15% off!

Use code at checkout:

Skills