Cuando usa Python, debe usar los módulos correctos para hacer lo que desea. Para encontrar todos los archivos en un directorio con extensión shp, por ejemplo, hay soluciones mucho más simples que se presentaron sin interrupción, lo cual es horrible ... (como la solución presentada por Nathan W, pero hay muchas, muchas otras, solo buscar en internet)
Algunos ejemplos con módulos relevantes:
1) con el módulo glob:
solo archivos de forma:
import glob
import os
os.chdir("mydir")
for files in glob.glob("*.shp"):
print files
archivos de forma 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 quieres 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 la lista (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.
arcpy.da.walk
.