Eliminar ficheros y carpetas en Python

Acordeón de los Índices




Lección: 40 - Eliminar ficheros y carpetas en Python

🗑️ Delete a File

🗑️ Para eliminar un archivo en Python, podemos utilizar el módulo os, que proporciona una manera de interactuar con el sistema operativo. La función específica que necesitamos es os.remove().

La función os.remove():

La función os.remove(path) elimina el archivo especificado por la ruta (path). Si el archivo no existe o la ruta especificada es un directorio, se generará un error (FileNotFoundError o IsADirectoryError, respectivamente).

Ejemplo: Eliminar un archivo:

import os

ruta_archivo = "mi_archivo_a_eliminar.txt"

try:
    os.remove(ruta_archivo)
    print(f"El archivo '{ruta_archivo}' ha sido eliminado exitosamente.")
except FileNotFoundError:
    print(f"Error: El archivo '{ruta_archivo}' no fue encontrado.")
except IsADirectoryError:
    print(f"Error: '{ruta_archivo}' es un directorio, no un archivo.")
except Exception as e:
    print(f"Ocurrió un error al intentar eliminar el archivo: {e}")

En este ejemplo, primero importamos el módulo os. Luego, definimos la ruta del archivo que queremos eliminar. Utilizamos un bloque try-except para manejar posibles errores, como que el archivo no exista o que la ruta sea de un directorio. Si la eliminación es exitosa, se imprime un mensaje informativo.

Consideraciones importantes:

  • Asegúrate de tener los permisos necesarios para eliminar el archivo en la ubicación especificada.
  • La función os.remove() elimina el archivo de forma permanente. No lo envía a la papelera de reciclaje.
  • Es crucial manejar las excepciones FileNotFoundError e IsADirectoryError para que tu programa no se detenga inesperadamente si el archivo no se encuentra o si intentas eliminar un directorio con esta función.
🔍 Check if File Exists

🔍 Antes de intentar eliminar un archivo, es una buena práctica verificar si realmente existe. Esto ayuda a evitar errores como FileNotFoundError y hace que tu programa sea más robusto. El módulo os también nos proporciona herramientas para esto. En particular, la función os.path.exists() es muy útil.

La función os.path.exists():

La función os.path.exists(path) toma una ruta como argumento y devuelve True si el archivo o directorio especificado por la ruta existe, y False en caso contrario.

Ejemplo: Comprobar si un archivo existe antes de eliminarlo:

import os

ruta_archivo_eliminar = "mi_archivo_a_eliminar.txt"

if os.path.exists(ruta_archivo_eliminar):
    try:
        os.remove(ruta_archivo_eliminar)
        print(f"El archivo '{ruta_archivo_eliminar}' ha sido eliminado exitosamente.")
    except Exception as e:
        print(f"Ocurrió un error al intentar eliminar el archivo: {e}")
else:
    print(f"El archivo '{ruta_archivo_eliminar}' no existe, no se puede eliminar.")

En este ejemplo, primero verificamos si el archivo especificado por ruta_archivo_eliminar existe utilizando os.path.exists(). Solo si la función devuelve True, intentamos eliminar el archivo con os.remove(). Si el archivo no existe, se muestra un mensaje indicando que no se puede eliminar.

Otras funciones útiles para verificar la existencia y el tipo:

  • os.path.isfile(path): Devuelve True si la ruta es un archivo regular existente.
  • os.path.isdir(path): Devuelve True si la ruta es un directorio existente.

Estas funciones pueden ser útiles en diferentes escenarios donde necesitas distinguir entre archivos y directorios antes de realizar una operación.

📂 Delete Folder

📂 Para eliminar una carpeta (directorio) en Python, también utilizamos el módulo os. Sin embargo, la función que necesitamos aquí es os.rmdir().

La función os.rmdir():

La función os.rmdir(path) elimina el directorio especificado por la ruta (path). Es importante tener en cuenta que os.rmdir() solo puede eliminar directorios que estén vacíos. Si el directorio contiene archivos o subdirectorios, se generará un error (OSError).

Ejemplo: Eliminar una carpeta vacía:

import os

ruta_carpeta_vacía = "mi_carpeta_vacía"

if os.path.exists(ruta_carpeta_vacía):
    try:
        os.rmdir(ruta_carpeta_vacía)
        print(f"La carpeta '{ruta_carpeta_vacía}' ha sido eliminada exitosamente.")
    except OSError:
        print(f"Error: La carpeta '{ruta_carpeta_vacía}' no está vacía.")
    except Exception as e:
        print(f"Ocurrió un error al intentar eliminar la carpeta: {e}")
else:
    print(f"Error: La carpeta '{ruta_carpeta_vacía}' no fue encontrada.")

En este ejemplo, intentamos eliminar la carpeta "mi\_carpeta\_vacía" utilizando os.rmdir(). Primero, verificamos si la carpeta existe. Si existe y está vacía, se eliminará. Si contiene archivos o subdirectorios, se capturará la excepción OSError y se mostrará un mensaje.

Eliminar carpetas con contenido (usando shutil.rmtree()):

Si necesitas eliminar una carpeta que contiene archivos y subdirectorios, debes utilizar la función shutil.rmtree(path) del módulo shutil. Esta función elimina recursivamente el directorio y todo su contenido.

import shutil
import os

ruta_carpeta_con_contenido = "mi_carpeta_con_contenido"

if os.path.exists(ruta_carpeta_con_contenido):
    try:
        shutil.rmtree(ruta_carpeta_con_contenido)
        print(f"La carpeta '{ruta_carpeta_con_contenido}' y su contenido han sido eliminados exitosamente.")
    except Exception as e:
        print(f"Ocurrió un error al intentar eliminar la carpeta y su contenido: {e}")
else:
    print(f"Error: La carpeta '{ruta_carpeta_con_contenido}' no fue encontrada.")

¡Advertencia! Utiliza shutil.rmtree() con precaución, ya que eliminará permanentemente la carpeta y todo lo que contenga. No habrá forma fácil de recuperar los archivos eliminados.

Consideraciones importantes:

  • Asegúrate de tener los permisos necesarios para eliminar la carpeta.
  • Ten mucho cuidado al usar shutil.rmtree(), especialmente si la ruta se genera dinámicamente. Siempre verifica la ruta antes de ejecutar la función.
  • Al igual que con la eliminación de archivos, no hay una "papelera de reciclaje" cuando se eliminan carpetas con estas funciones.



Publicar un comentario

0 Comentarios