我试图执行一些地理处理。 我的任务是找到所有shape文件的目录中,然后在目录内的shape文件找到全路径名。 我可以得到shape文件的名字,但我不知道如何为shape文件得到完整的路径名。
shpfiles = []
for path, subdirs, files in os.walk(path):
for x in files:
if x.endswith(".shp") == True:
shpfiles.append[x]
我试图执行一些地理处理。 我的任务是找到所有shape文件的目录中,然后在目录内的shape文件找到全路径名。 我可以得到shape文件的名字,但我不知道如何为shape文件得到完整的路径名。
shpfiles = []
for path, subdirs, files in os.walk(path):
for x in files:
if x.endswith(".shp") == True:
shpfiles.append[x]
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")]
为什么不import glob
?
import glob
print(glob.glob('F:\OTHERS\PHOTOS\Panama\\mai13*\\*.jpg') )
而我得到的所有我想要的JPEG,具有绝对路径
>>>
['F:\\OTHERS\\PHOTOS\\Panama\\mai13\\03052013271.jpg',
'F:\\OTHERS\\PHOTOS\\Panama\\mai13\\05052013272.jpg',
'F:\\OTHERS\\PHOTOS\\Panama\\mai13\\05052013273.jpg']
似乎os.path.abspath(finename)
会工作。 请试试。
shpfiles = []
for path, subdirs, files in os.walk(path):
for x in files:
if x.endswith(".shp") == True:
shpfiles.append(os.path.join(path, x))