如何在glob模式中排除node_modules目录?
如何用glob正确排除node_modules目录
- 你当前的ignore规则
./node_modules/*仅匹配node_modules下的直接子项,无法递归排除所有子目录和文件,且未覆盖目录本身的匹配逻辑。 - 针对Python 3.10+版本(glob原生支持ignore参数),正确配置如下:
- 把ignore规则改为
['node_modules/**'],配合recursive=True实现递归排除 - 示例代码:
- 把ignore规则改为
import glob # 递归遍历当前目录所有文件,完全排除node_modules目录下所有内容 target_files = glob.glob('**/*', recursive=True, ignore=['node_modules/**'])
- 若使用Python 3.9及以下版本(glob无ignore参数),手动过滤结果:
import glob # 先递归获取所有文件,再过滤掉node_modules开头的路径 target_files = [f for f in glob.glob('**/*', recursive=True) if not f.startswith('node_modules/')]
- 跨平台场景推荐用pathlib更可靠:
from pathlib import Path # 递归遍历所有文件,排除路径中包含node_modules的项 target_files = [str(file) for file in Path('.').rglob('*') if 'node_modules' not in file.parts]
内容的提问来源于stack exchange,提问作者Andronik Nazaryan
相关产品推荐
相关产品推荐

