Header Ads Widget

Ticker

6/recent/ticker-posts

Cómo eliminar archivos y directorios en Python

Python tiene algunos módulos integrados que le permiten eliminar archivos y directorios.

Este tutorial explica cómo eliminar archivos y directorios usando funciones de los módulos ospathliby .shutil

Eliminación de archivos

En Python, puede usar os.remove()os.unlink()pathlib.Path.unlink()para eliminar un solo archivo.

El os módulo proporciona una forma portátil de interactuar con el sistema operativo. El módulo está disponible para Python 2 y 3.

Para eliminar un solo archivo con os.remove(), pase la ruta al archivo como argumento:

import os

file_path = '/tmp/file.txt'
os.remove(file_path)

os.remove()os.unlink()las funciones son semánticamente idénticas:

import os

file_path = '/tmp/file.txt'
os.unlink(file_path)

Si el archivo especificado no existeFileNotFoundError , se arroja un error. Ambos os.remove()os.unlink()pueden eliminar solo archivos, no directorios. Si la ruta dada apunta a un directorio, arrojarán un IsADirectoryErrorerror.

Eliminar un archivo requiere un permiso de escritura y ejecución en el directorio que contiene el archivo. De lo contrario, obtendrá un PermissionErrorerror.

Para evitar errores al eliminar archivos, puede usar el manejo de excepciones para detectar la excepción y enviar un mensaje de error adecuado:

import os

file_path = '/tmp/file.txt'

try:
    os.remove(file_path)
except OSError as e:
    print("Error: %s : %s" % (file_path, e.strerror))

El pathlib módulo está disponible en Python 3.4 y superior. Si desea utilizar este módulo en Python 2, puede instalarlo con pip. pathlibproporciona una interfaz orientada a objetos para trabajar con rutas de sistemas de archivos para diferentes sistemas operativos.

Para eliminar un archivo con el pathlibmódulo, cree un Pathobjeto que apunte al archivo y llame al unlink()método en el objeto:

from pathlib import Path

file_path = Path('/tmp/file.txt')

try:
    file_path.unlink()
except OSError as e:
    print("Error: %s : %s" % (file_path, e.strerror))

pathlib.Path.unlink()os.remove()os.unlink()también se puede utilizar para eliminar un enlace simbólico .

La coincidencia de patrones

Puede usar el módulo glob para hacer coincidir varios archivos según un patrón. Por ejemplo, para eliminar todos los .txtarchivos del /tmpdirectorio, usaría algo como esto:

import os
import glob

files = glob.glob('/tmp/*.txt')

for f in files:
    try:
        f.unlink()
    except OSError as e:
        print("Error: %s : %s" % (f, e.strerror))

Para eliminar recursivamente todos los archivos .txten el /tmpdirectorio y todos los subdirectorios debajo de él, pase el recursive=Trueargumento a la glob()función y use el patrón ``**`:

import os
import glob

files = glob.glob('/tmp/**/*.txt', recursive=True)

for f in files:
    try:
        os.remove(f)
    except OSError as e:
        print("Error: %s : %s" % (f, e.strerror))

El pathlibmódulo incluye dos funciones globales glob()rglob()para hacer coincidir archivos en un directorio determinado. glob()coincide con los archivos solo en el directorio de nivel superior. rglob()coincide con todos los archivos en el directorio y todos los subdirectorios, recursivamente. El siguiente código de ejemplo elimina todos los .txtarchivos en el /tmpdirectorio:

from pathlib import Path

for f in Path('/tmp').glob('*.txt'):
    try:
        f.unlink()
    except OSError as e:
        print("Error: %s : %s" % (f, e.strerror))

Eliminación de directorios (carpetas)

En Python, puede usar os.rmdir()pathlib.Path.rmdir()para eliminar un directorio vacío y shutil.rmtree()para eliminar un directorio que no esté vacío.

El siguiente ejemplo muestra cómo eliminar un directorio vacío:

import os

dir_path = '/tmp/img'

try:
    os.rmdir(dir_path)
except OSError as e:
    print("Error: %s : %s" % (dir_path, e.strerror))

Alternativamente, puede eliminar directorios con el pathlibmódulo:

from pathlib import Path

dir_path = Path('/tmp/img')

try:
    dir_path.rmdir()
except OSError as e:
    print("Error: %s : %s" % (dir_path, e.strerror))

El shutil módulo le permite realizar una serie de operaciones de alto nivel en archivos y directorios.

Con la shutil.rmtree()función puede eliminar un directorio determinado, incluido su contenido:

import shutil

dir_path = '/tmp/img'

try:
    shutil.rmtree(dir_path)
except OSError as e:
    print("Error: %s : %s" % (dir_path, e.strerror))

El argumento pasado a shutil.rmtree()no puede ser un enlace simbólico a un directorio.

Conclusión

Python proporciona varios módulos para manejar archivos.

Le mostramos cómo usar os.remove()os.unlink()pathlib.Path.unlink()para eliminar un solo archivo, eliminar un directorio vacío y os.rmdir()eliminar recursivamente un directorio y todo su contenido.pathlib.Path.rmdir()shutil.rmtree()

Tenga mucho cuidado al eliminar archivos o directorios, porque una vez que se elimina el archivo, no se puede recuperar fácilmente.

Si tiene alguna pregunta o comentario, no dude en dejar un comentario.

Publicar un comentario

0 Comentarios