Cuando usas Python, debes utilizar los módulos correctos para hacer lo que quieres. Para encontrar todos los archivos en un directorio con extensión shp, por ejemplo, hay soluciones mucho más simples que se presentó sin la ruptura, que es horrible ...(como la solución presentada por Nathan W, pero hay muchos, muchos otros, sólo tiene que buscar en Internet)
Algunos ejemplos con módulos relevantes:
1) con el módulo glob:
sólo shapefiles:
import glob
import os
os.chdir("mydir")
for files in glob.glob("*.shp"):
print files
shapefiles y geodatabases:
import glob
types = ('*.shp', '*.gbd') # the tuple of file types
files_grabbed = []
for files in types:
files_grabbed.extend(glob.glob(files)) #files_grabbed = the list of shp and gbd files
si desea buscar también en los subdirectorios:
import glob
for f in glob.iglob("/mydir/*/*.shp"): #search immediate subdirectories
print f
2) con os.listdir y comprensión de listas (en dos líneas) -> lista de resultados
path = 'mydir'
shape_files = [f for f in os.listdir(path) if f.endswith('.shp')]
gdb_files = [f for f in os.listdir(path) if f.endswith('.gdb')]
3) con el módulo fnmatch:
import fnmatch
for file in os.listdir('path'):
if fnmatch.fnmatch(file, '*.shp'):
print file
y muchas otras soluciones, recursivas, etc.