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 os
, pathlib
y .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()
y 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()
y os.unlink()
pueden eliminar solo archivos, no directorios. Si la ruta dada apunta a un directorio, arrojarán un IsADirectoryError
error.
Eliminar un archivo requiere un permiso de escritura y ejecución en el directorio que contiene el archivo. De lo contrario, obtendrá un PermissionError
error.
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. pathlib
proporciona una interfaz orientada a objetos para trabajar con rutas de sistemas de archivos para diferentes sistemas operativos.
Para eliminar un archivo con el pathlib
módulo, cree un Path
objeto 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()
y 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 .txt
archivos del /tmp
directorio, 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 .txt
en el /tmp
directorio y todos los subdirectorios debajo de él, pase el recursive=True
argumento 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 pathlib
módulo incluye dos funciones globales glob()
y 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 .txt
archivos en el /tmp
directorio:
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()
y pathlib.Path.rmdir()
para eliminar un directorio vacío y shutil.rmtree()
para eliminar un directorio que no esté 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 pathlib
mó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.
0 Comentarios