我想创建一个包含所有匹配特定字符串的文件路径名的列表,例如“04_DEM”,以便我可以对这些目录中的文件进行进一步处理?
例如
输入
C:\directory\NewZealand\04DEM\DEM_CD23_1232.tif
C:\directory\Australia\04DEM\DEM_CD23_1233.tif
C:\directory\NewZealand\05DSM\DSM_CD23_1232.tif
C:\directory\Australia\05DSM\DSM_CD23_1232.tif
想要的输出
C:\directory\NewZealand\04DEM\
C:\directory\Australia\04DEM\
这确保只处理那些文件,因为目录中的一些其他文件的文件名中也包含相同的字符串“DEM”,我不想修改它。
由于是 Py 代码的菜鸟,这是我的错误尝试
import os
for dirnames in os.walk('D:\Canterbury_2017Copy'):
print dirnames
if dirnames=='04_DEM' > listofdirectoriestoprocess.txt
print "DONE CHECK TEXT FILE"
请您参考如下方法:
您可以为此使用 os.path:
import os
lst = [r'C:\directory\NewZealand\04DEM\DEM_CD23_1232.tif',
r'C:\directory\Australia\04DEM\DEM_CD23_1233.tif',
r'C:\directory\NewZealand\05DSM\DSM_CD23_1232.tif',
r'C:\directory\Australia\05DSM\DSM_CD23_1232.tif']
def filter_paths(lst, x):
return [os.path.split(i)[0] for i in lst if os.path.normpath(i).split(os.sep)[3] == x]
res = list(filter_paths(lst, '04DEM'))
# ['C:\\directory\\NewZealand\\04DEM',
# 'C:\\directory\\Australia\\04DEM']
