Quiero eliminar todos los archivos con la extensión .bak
en un directorio. ¿Cómo puedo hacer eso en Python?Eliminar todos los archivos en un directorio con Python
Respuesta
Via os.listdir
y os.remove
:
import os
filelist = [ f for f in os.listdir(mydir) if f.endswith(".bak") ]
for f in filelist:
os.remove(os.path.join(mydir, f))
O vía glob.glob
:
import glob, os, os.path
filelist = glob.glob(os.path.join(mydir, "*.bak"))
for f in filelist:
os.remove(f)
Asegúrese de estar en el directorio correcto, con el tiempo utilizando os.chdir
.
Su primer ejemplo es usar redundantes para bucles. Puede pasar con - [os.remove (f) para f en os.listdir (".") If f.endswith (". Bak")] - como listas de comprensión están destinados a ser utilizados. O puede mover el 'si' en la comprensión en el ciclo for - para f en os.listdir ("."): if f.endswith (". Bak"): os.remove (f) – dragonjujo
@ slh2080 Como dice que el problema se ha resuelto, ¿por qué no marca la respuesta como la respuesta correcta? – blwy10
@dragonjujo, sí lo sé, pero pensé que sería más claro de esta manera ... – miku
Utilice os.chdir
para cambiar el directorio. Use glob.glob
para generar una lista de nombres de archivos que terminen en '.bak'. Los elementos de la lista son solo cadenas.
Luego puede usar os.unlink
para eliminar los archivos. (PS. os.unlink
y os.remove
son sinónimos para la misma función.)
#!/usr/bin/env python
import glob
import os
directory='/path/to/dir'
os.chdir(directory)
files=glob.glob('*.bak')
for filename in files:
os.unlink(filename)
puede crear una función. Agregue maxdepth como desee para recorrer subdirectorios.
def findNremove(path,pattern,maxdepth=1):
cpath=path.count(os.sep)
for r,d,f in os.walk(path):
if r.count(os.sep) - cpath <maxdepth:
for files in f:
if files.endswith(pattern):
try:
print "Removing %s" % (os.path.join(r,files))
#os.remove(os.path.join(r,files))
except Exception,e:
print e
else:
print "%s removed" % (os.path.join(r,files))
path=os.path.join("/home","dir1","dir2")
findNremove(path,".bak")
En Python 3.5, os.scandir
es mejor si usted necesita para comprobar si los atributos de archivo o tipo - ver os.DirEntry
de propiedades del objeto que se devuelve por la función.
import os
for file in os.scandir(path):
if file.name.endswith(".bak"):
os.unlink(file.path)
Esto también No es necesario cambiar los directorios ya que cada DirEntry
ya incluye la ruta completa al archivo.
Te faltan dos puntos, la primera línea dentro del ciclo for debe ser 'if file.name.endswith (". Bak "):' – TSeymour
¡Gracias!Eso me enseñará a escribir código sin ejecutarlo realmente –
En Linux y MacOS puede ejecutar comandos simples de la cáscara:
subprocess.run('rm /tmp/*.bak', shell=True)
No es una buena opción en mi opinión. No es portátil y probablemente sea más caro debido al subproceso adicional. Es mejor usar las API de Python. – Haakon
- 1. Buscar todos los archivos CSV en un directorio usando Python
- 2. ¿Eliminar todos los archivos de git de un directorio?
- 3. Ejecutar todos los archivos Python en un directorio
- 4. Unir todos los archivos en un directorio, con un separador
- 5. Comando Unix para eliminar todos los archivos en un directorio pero conservar el directorio
- 6. Python-FTP descarga todos los archivos en el directorio
- 7. ¿Cómo eliminar todos los archivos del directorio en el servidor remoto en python?
- 8. Eliminar todos los archivos en un directorio sin subdirectorios con Apache Ant
- 9. Obtener rutas absolutas de todos los archivos en un directorio
- 10. ¿Cómo incluir todos los archivos de un directorio con cmake?
- 11. PHP: Desvincular todos los archivos dentro de un directorio y luego eliminar ese directorio
- 12. Objetivo c: Cómo eliminar solo todos los archivos de un directorio pero conservar el directorio
- 13. Listar los archivos en un directorio y todos los subdirectorios
- 14. Copie todos los archivos en el directorio
- 15. Eliminar todos los permisos de directorio
- 16. ¿Cómo eliminar todos los archivos que se crearon recientemente en un directorio en Linux?
- 17. ¿Cómo recupero todos los nombres de archivos en un directorio?
- 18. XQuery todos los archivos en un directorio específico?
- 19. gmake compila todos los archivos en un directorio
- 20. Eliminar todos los archivos en un directorio (no toque ninguna carpeta ni nada dentro de ellos)
- 21. Git - Seguimiento automático de todos los archivos en un directorio
- 22. Script PHP para recorrer todos los archivos en un directorio?
- 23. QMake: compilando automáticamente todos los archivos en un directorio
- 24. Iterar todos los archivos en un directorio usando BOOST_FOREACH
- 25. Ejecutar todos los archivos SQL en un directorio
- 26. fuente de todos los archivos en un directorio de .bash_profile
- 27. ¿Cómo obtener todos los archivos en un directorio?
- 28. Cómo obtener archivos en un directorio, incluidos todos los subdirectorios
- 29. ¿Cómo formatear todos los archivos bajo un directorio en emacs?
- 30. Listar todos los archivos y directorios en un directorio + subdirectorios
@ slh2080: Publicación de "Resuelto" no es lo que se hace en este sitio. Lo que debe hacer es elegir la respuesta que realmente utilizó y hacer clic en la marca de verificación para indicar que resolvió su problema. –
Lo siento. Gracias por señalar mi error. No es tarea, solo estoy aprendiendo Python en mi tiempo libre. Hice clic en la respuesta que usé, pero eso fue antes de ver la respuesta de ghostdog74. – slh2080
nota: para eliminar un árbol de directorios completo ['shutil.rmtree (ruta)' podría usarse] (https://docs.python.org/3/library/shutil.html#shutil.rmtree). – jfs