Python – cómo encontrar archivos y saltar directorios en os.listdir

Uso os.listdir y funciona bien, pero también tengo subdirectorios en la lista, que no es lo que quiero: solo necesito archivos.

¿Qué función necesito usar para eso?

Miré también a os.walk y parece ser lo que quiero, pero no estoy seguro de cómo funciona.

Necesitas filtrar directorios; os.listdir() enumera todos los nombres en una ruta dada. Puedes usar os.path.isdir() para esto:

 basepath = '/path/to/directory' for fname in os.listdir(basepath): path = os.path.join(basepath, fname) if os.path.isdir(path): # skip directories continue 

os.walk() hace el mismo trabajo bajo el capó; a menos que necesite revisar los subdirectorios, no necesita usar os.walk() aquí.

Aquí hay una pequeña y agradable frase en forma de una lista de comprensión:

 [f for f in os.listdir(your_directory) if os.path.isfile(os.path.join(your_directory, f))] 

Esto return una list de nombres de archivos dentro del your_directory especificado.

 import os directoryOfChoice = "C:\\" # Replace with a directory of choice!!! filter(os.path.isfile, os.listdir(directoryOfChoice)) 

PS: os.getcwd () devuelve el directorio actual.

 for fname in os.listdir('.'): if os.path.isdir(fname): pass # do your stuff here for directory else: pass # do your stuff here for regular file