我在试着进行一些地理处理。我的任务是找到一个目录中的所有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]
发布于 2013-05-09 15:27:48
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
,以避免与您已经传递给os.walk()
的path
变量冲突。
请注意,您不需要测试.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")]
发布于 2013-05-09 15:31:41
看起来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))
发布于 2013-05-09 15:36:17
为什么不是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']
https://stackoverflow.com/questions/16465399
复制