-->

需要使用os.walk特定文件的路径()(Need the path for particular

2019-09-02 09:19发布

我试图执行一些地理处理。 我的任务是找到所有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]

Answer 1:

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")]


Answer 2:

为什么不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']


Answer 3:

似乎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))


文章来源: Need the path for particular files using os.walk()