Eliminación de archivos y carpetas en Python con el módulo os y send2trash

Puede eliminar un solo archivo o una sola carpeta vacía con funciones del módulo os , mientras que para eliminar una carpeta y todo su contenido, use el módulo shutil .

  • Llamar a os.unlink( path ) eliminará el archivo en el path.
  • Llamar a os.rmdir ( path ) eliminará la carpeta en el path. Esta carpeta debe estar vacía de archivos o carpetas.
  • Llamar a shutil.rmtree( path ) eliminará la carpeta en el path , y todos los archivos y carpetas que contiene también se eliminarán.

¡Tenga cuidado al usar estas funciones en sus programas! A menudo es una buena idea ejecutar primero su programa con estas llamadas comentadas y con las llamadas print() agregadas para mostrar los archivos que se eliminarán. Aquí hay un programa de Python que estaba destinado a eliminar archivos que tienen la extensión de archivo .txt pero tiene un error tipográfico (resaltado en negrita) que hace que elimine archivos .rxt en su lugar:

import os
from pathlib import Path
for filename in Path.home().glob('*. rxt'):
    os.unlink(filename)

Si tuviera archivos importantes que terminaran en .rxt , se habrían eliminado accidentalmente de forma permanente. En su lugar, primero debería haber ejecutado el programa de esta manera:

import os
from pathlib import Path
for filename in Path.home().glob('*.rxt'):
    #os.unlink(filename)
    print(filename)

Ahora se comenta la llamada a os.unlink( path ), por lo que Python la ignora. En su lugar, imprimirá el nombre de archivo que se habría eliminado. Ejecutar primero esta versión del programa le mostrará que accidentalmente le ha dicho al programa que elimine los archivos .rxt en lugar de los archivos .txt .

Una vez que esté seguro de que el programa funciona según lo previsto, elimine la línea de impresión print(filename) y elimine el comentario de la línea os.unlink( path ) . Luego ejecute el programa nuevamente para eliminar los archivos.

Dado que la función integrada shutil.rmtree() de Python elimina archivos y carpetas de forma irreversible, su uso puede ser peligroso. Una forma mucho mejor de eliminar archivos y carpetas es con el módulo de terceros send2trash. Puede instalar este módulo ejecutando pip install --user send2trash desde una ventana de Terminal.

Usar send2trash es mucho más seguro que las funciones regulares de eliminación de Python, porque enviará carpetas y archivos a la papelera o papelera de reciclaje de su computadora en lugar de eliminarlos permanentemente. Si un error en su programa elimina algo con send2trash que no tenía la intención de eliminar, puede restaurarlo más tarde desde la papelera de reciclaje.

Después de haber instalado send2trash , ingrese lo siguiente en el shell interactivo:

>>> import send2trash
>>> baconFile = open('bacon.txt', 'a')   # creates the file
>>> baconFile.write('Bacon is not a vegetable.')
25
>>> baconFile.close()
>>> send2trash.send2trash('bacon.txt')

En general, siempre debe usar la función send2trash.send2trash() para eliminar archivos y carpetas. Pero si bien enviar archivos a la papelera de reciclaje le permite recuperarlos más tarde, no liberará espacio en el disco como lo hace eliminarlos permanentemente. Si desea que su programa libere espacio en disco, use las funciones os y shutil para eliminar archivos y carpetas. Tenga en cuenta que la función send2trash() solo puede enviar archivos a la papelera de reciclaje; no puede extraer archivos de él.

Deja una respuesta