如何在Python的递归glob操作中排除基础目录?
Python glob递归模式排除基础目录的方案
Python标准库的glob模块没有专门的内置选项能直接在recursive=True模式下排除基础目录(即你例子中的D:/TEST/)。
原因说明
当使用glob.glob("D:/TEST/**", recursive=True)时,**在递归模式下会匹配空路径(也就是基础目录本身),这是模块的设计逻辑——**的作用是匹配当前目录及其所有子目录层级,因此自然会包含基础目录。而非递归模式下的*或**不会匹配目录本身,所以不会出现这个差异。
无需手动移除的替代写法
如果不想手动过滤结果,可以调整glob匹配路径为:
glob.glob("D:/TEST/**/*", recursive=True)
这个写法中,**匹配D:/TEST/下的所有子目录层级,后面的*匹配每个层级里的文件和子目录,最终返回的结果只会包含基础目录下的所有子项,不会包含D:/TEST/本身,和非递归模式的表现保持一致。
内容的提问来源于stack exchange,提问作者Basj
相关产品推荐
相关产品推荐

