Skip to main content
 首页 » 编程设计

Python:如何在目录名(不是单个文件名)中搜索特定的 "string"

2025年05月04日15三少

我想创建一个包含所有匹配特定字符串的文件路径名的列表,例如“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']