¿Cómo eliminar el contenido de una carpeta?
¿Cómo puedo eliminar el contenido de una carpeta local en Python?
El proyecto actual es para Windows, pero también me gustaría ver *nix.
import os, shutil
folder = '/path/to/folder'
for filename in os.listdir(folder):
file_path = os.path.join(folder, filename)
try:
if os.path.isfile(file_path) or os.path.islink(file_path):
os.unlink(file_path)
elif os.path.isdir(file_path):
shutil.rmtree(file_path)
except Exception as e:
print('Failed to delete %s. Reason: %s' % (file_path, e))
Simplemente puedes hacer esto:
import os
import glob
files = glob.glob('/YOUR/PATH/*')
for f in files:
os.remove(f)
Por supuesto, puede utilizar otro filtro en su ruta, por ejemplo: /YOU/PATH/*.txt para eliminar todos los archivos de texto en un directorio.
Puede eliminar la carpeta en sí, así como todo su contenido, usando shutil.rmtree
:
import shutil
shutil.rmtree('/path/to/folder')
shutil.rmtree(path, ignore_errors=False, onerror=None)
Eliminar un árbol de directorios completo; La ruta debe apuntar a un directorio (pero no a un enlace simbólico a un directorio). Si ignore_errors es verdadero, se ignorarán los errores resultantes de eliminaciones fallidas; si es falso o se omite, dichos errores se manejan llamando a un controlador especificado por onerror o, si se omite, generan una excepción.
Ampliando la respuesta de mhawke, esto es lo que he implementado. Elimina todo el contenido de una carpeta pero no la carpeta en sí. Probado en Linux con archivos, carpetas y enlaces simbólicos, debería funcionar también en Windows.
import os
import shutil
for root, dirs, files in os.walk('/path/to/folder'):
for f in files:
os.unlink(os.path.join(root, f))
for d in dirs:
shutil.rmtree(os.path.join(root, d))
Me sorprende que nadie haya mencionado lo fantástico pathlib
que es hacer este trabajo.
Si solo desea eliminar archivos en un directorio, puede ser una línea
from pathlib import Path
[f.unlink() for f in Path("/path/to/folder").glob("*") if f.is_file()]
Para eliminar directorios también de forma recursiva, puedes escribir algo como esto:
from pathlib import Path
from shutil import rmtree
for path in Path("/path/to/folder").glob("**/*"):
if path.is_file():
path.unlink()
elif path.is_dir():
rmtree(path)