2024-05-23 18:51:21 发布
网友
我在试着做一些地理处理。我的任务是在目录中找到所有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]
为什么不import glob?
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)会起作用。请试试。
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))
os.walk将目录路径作为循环中的第一个值,只需使用os.path.join()创建完整文件名:
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变量不冲突。
path
dirpath
os.walk()
请注意,不需要测试.endswith() == True;if的结果是否已经为您完成了这项工作,== True部分是完全多余的。
.endswith() == True
if
== True
您可以使用.extend()和生成器表达式使上述代码更紧凑一些:
.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
?我得到了所有我想要的jpeg,绝对路径
似乎
os.path.abspath(finename)
会起作用。请试试。os.walk
将目录路径作为循环中的第一个值,只需使用os.path.join()
创建完整文件名:我将循环中的
path
重命名为dirpath
,以与您已经传递给os.walk()
的path
变量不冲突。请注意,不需要测试
.endswith() == True
;if
的结果是否已经为您完成了这项工作,== True
部分是完全多余的。您可以使用
.extend()
和生成器表达式使上述代码更紧凑一些:甚至作为一个列表理解:
相关问题 更多 >
编程相关推荐