glob匹配的时候排除文件夹
时间: 2023-10-02 13:07:04 浏览: 14
可以使用感叹号(!)来排除文件夹,例如:
```bash
# 匹配所有的txt文件,但排除文件夹test和temp
glob.glob('*.txt', recursive=True, exclude=['test/**', 'temp/**'])
```
其中,`**` 表示匹配任意层级的子文件夹。
相关问题
glob匹配的时候,只匹配文件路径,不匹配文件夹路径
这句话有点模糊,可以具体解释一下。
glob是Python中一个用于文件操作的模块,可以通过指定特定的模式来匹配文件路径。比如:
```python
import glob
# 匹配当前目录下所有的txt文件
txt_files = glob.glob("*.txt")
```
这里的`*.txt`就是用于匹配文件路径的模式,它只会匹配当前目录下的所有txt文件,而不会匹配文件夹路径。
如果要匹配文件夹路径,可以使用`**`来匹配任意层级的文件夹,比如:
```python
import glob
# 匹配当前目录下所有的文件夹
dir_paths = glob.glob("**/", recursive=True)
```
这里的`**/`就是用于匹配文件夹路径的模式,它会匹配任意层级的文件夹路径。需要注意的是,这里要设置`recursive=True`参数才能递归匹配子文件夹。
Cmake GLOB_RECURSE获取文件夹路径
CMake的GLOB_RECURSE命令用于获取指定文件夹及其子文件夹中的所有文件路径。在给定的引用中,使用GLOB_RECURSE命令来获取所有.cpp文件的路径,并将其保存在ENDF6_SRC变量中。如果你想要获取文件夹路径而不包括Test目录中的.cpp文件,你可以使用以下方法:
在顶层目录的CMakeLists.txt文件中添加以下行:
```
file(GLOB_RECURSE ENDF6_SRC ${PROJECT_SOURCE_DIR}/*.cpp)
list(FILTER ENDF6_SRC EXCLUDE REGEX ".*/Test/.*\\.cpp$")
```
这样,ENDF6_SRC变量将包含TopDir目录及其子目录中的所有.cpp文件路径,但不包括Test目录中的.cpp文件。