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およびリスト内包表記(2行)->結果リスト
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
。