os.walk
ループの最初の値としてディレクトリへのパスを提供os.path.join()
します。完全なファイル名を作成するために使用します。
shpfiles = []
for dirpath, subdirs, files in os.walk(path):
for x in files:
if x.endswith(".shp"):
shpfiles.append(os.path.join(dirpath, x))
path
ループ内で、既に渡していdirpath
た変数と競合しないように名前を変更しました。path
os.walk()
.endswith() == True
の結果が;かどうかをテストする必要がないことに注意してください。if
すでにそれを行っていますが、その== True
部分は完全に冗長です。
.extend()
とジェネレーター式を使用して、上記のコードをもう少しコンパクトにすることができます。
shpfiles = []
for dirpath, subdirs, files in os.walk(path):
shpfiles.extend(os.path.join(dirpath, x) for x in files if x.endswith(".shp"))
または、1 つのリスト内包表記としても:
shpfiles = [os.path.join(d, x)
for d, dirs, files in os.walk(path)
for x in files if x.endswith(".shp")]