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"))甚至作为一个列表理解:
shpfiles = [os.path.join(d, x) for d, dirs, files in os.walk(path) for x in files if x.endswith(".shp")]


