Когда вы используете Python, вы должны использовать правильные модули, чтобы делать то, что вы хотите. Например, чтобы найти все файлы в каталоге с расширением shp, есть гораздо более простые решения, которые были представлены без перерыва, что ужасно ... (как решение, представленное Натаном В., но есть много, много других, просто поиск в интернете)
Некоторые примеры с соответствующими модулями:
1) с модулем glob:
только шейп-файлы:
import glob
import os
os.chdir("mydir")
for files in glob.glob("*.shp"):
print files
шейп-файлы и базы геоданных:
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
если вы хотите искать также в подкаталогах:
import glob
for f in glob.iglob("/mydir/*/*.shp"): #search immediate subdirectories
print f
2) с os.listdir и пониманием списка (в две строки) -> список результатов
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) с модулем fnmatch:
import fnmatch
for file in os.listdir('path'):
if fnmatch.fnmatch(file, '*.shp'):
print file
и многие другие решения, рекурсивные и т. д.
arcpy.da.walk
.