@ slh2080: Publicar "Resuelto" no es lo que haces 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.
S.Lott
1
Lo siento. Gracias por señalar mi error. No es tarea, solo aprender python en mi tiempo libre. Hice clic en la respuesta que usé pero eso fue antes de ver la respuesta de ghostdog74.
Su primer ejemplo es usar redundantes para bucles. Puede pasar con - [os.remove (f) for f en os.listdir (".") Si f.endswith (". Bak")] - ya que las comprensiones de listas están destinadas a ser utilizadas. O puede mover el 'if' en la comprensión al bucle for - for f en os.listdir ("."): If f.endswith (". Bak"): os.remove (f)
dragonjujo
@ slh2080 Dado que usted dice que el problema se ha resuelto, ¿por qué no marcar la respuesta como la respuesta correcta?
blwy10
55
Cuidado con el os.listdir (".") !!! Usé este código y olvidé cambiar la ruta, ¡todo mi código había desaparecido! ¡Intenté dos utilidades diferentes para recuperarse pero sin suerte!
Lei Guo
@LeiGuo Solucionó eso.
yugr
26
Use os.chdirpara cambiar el directorio. Se usa glob.globpara generar una lista de nombres de archivo que terminan en '.bak'. Los elementos de la lista son solo cadenas.
Entonces podría usar os.unlinkpara eliminar los archivos. (PS. os.unlinkY os.removeson sinónimos de la misma función).
#!/usr/bin/env pythonimport glob
import os
directory='/path/to/dir'
os.chdir(directory)
files=glob.glob('*.bak')for filename in files:
os.unlink(filename)
En Python 3.5, os.scandires mejor si necesita verificar los atributos o el tipo de archivo; consulte las os.DirEntrypropiedades del objeto que devuelve la función.
import os
for file in os.scandir(path):if file.name.endswith(".bak"):
os.unlink(file.path)
Esto tampoco requiere el cambio de directorios ya que cada uno DirEntryya incluye la ruta completa al archivo.
shutil.rmtree(path)
podría usarse .Respuestas:
Vía
os.listdir
yos.remove
:O a través de
glob.glob
:Asegúrese de estar en el directorio correcto, eventualmente utilizando
os.chdir
.fuente
Use
os.chdir
para cambiar el directorio. Se usaglob.glob
para generar una lista de nombres de archivo que terminan en '.bak'. Los elementos de la lista son solo cadenas.Entonces podría usar
os.unlink
para eliminar los archivos. (PS.os.unlink
Yos.remove
son sinónimos de la misma función).fuente
En Python 3.5,
os.scandir
es mejor si necesita verificar los atributos o el tipo de archivo; consulte lasos.DirEntry
propiedades del objeto que devuelve la función.Esto tampoco requiere el cambio de directorios ya que cada uno
DirEntry
ya incluye la ruta completa al archivo.fuente
if file.name.endswith(".bak"):
Puedes crear una función. Agregue maxdepth como desee para recorrer subdirectorios.
fuente
Primero engánchalos , luego desvincula .
fuente
En Linux y macOS, puede ejecutar un comando simple en el shell:
fuente
Me doy cuenta de que esto es viejo; sin embargo, aquí sería cómo hacerlo usando solo el módulo os ...
fuente