我正在尝试执行一些地理处理。我的任务是在目录中找到所有shapefile,然后在目录中找到该shapefile的完整路径名。我可以获取shapefile的名称,但我不知道如何获取该shapefile的完整路径名。
shpfiles = []
for path, subdirs, files in os.walk(path):
for x in files:
if x.endswith(".shp") == True:
shpfiles.append[x]
答案 0 :(得分:54)
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
的{{1}}变量不冲突。
请注意,您无需测试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 :(得分:0)
似乎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))
答案 2 :(得分:0)
为什么不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']