这就是我所拥有的:

glob(os.path.join('src','*.c'))

但是我想搜索src的子文件夹.像这样的事情会奏效的:

glob(os.path.join('src','*.c'))
glob(os.path.join('src','*','*.c'))
glob(os.path.join('src','*','*','*.c'))
glob(os.path.join('src','*','*','*','*.c'))

但这显然是有限和笨拙的.

推荐答案

pathlib.Path.rglob

使用Python 3.5中引入的pathlib模块中的pathlib.Path.rglob.

from pathlib import Path

for path in Path('src').rglob('*.c'):
    print(path.name)

如果不想使用pathlib,use可以使用glob.glob('**/*.c'),但不要忘记传入recursive关键字参数,它会在大目录上占用大量时间.

对于以点(.)开头的匹配文件;与当前目录中的文件或基于Unix系统上的隐藏文件一样,请使用下面的os.walk解决方案.

os.walk

对于较早的Python版本,使用os.walk递归遍历目录,使用fnmatch.filter匹配简单表达式:

import fnmatch
import os

matches = []
for root, dirnames, filenames in os.walk('src'):
    for filename in fnmatch.filter(filenames, '*.c'):
        matches.append(os.path.join(root, filename))

Python相关问答推荐

我必须将Sigmoid函数与r2值的两种类型的数据集(每种6个数据集)进行匹配,然后绘制匹配函数的求导.我会犯错

在Polars(Python库)中将二进制转换为具有非UTF-8字符的字符串变量

加速Python循环

OR—Tools CP SAT条件约束

多处理队列在与Forking http.server一起使用时随机跳过项目

Python脚本使用蓝牙运行在Windows 11与raspberry pi4

合并帧,但不按合并键排序

将scipy. sparse矩阵直接保存为常规txt文件

如何防止Pandas将索引标为周期?

将标签移动到matplotlib饼图中楔形块的开始处

通过追加列表以极向聚合

GPT python SDK引入了大量开销/错误超时

mdates定位器在图表中显示不存在的时间间隔

有没有办法在不先将文件写入内存的情况下做到这一点?

当输入是字典时,`pandas. concat`如何工作?

为什么我的scipy.optimize.minimize(method=";newton-cg";)函数停留在局部最大值上?

时长超过24小时如何从Excel导入时长数据

对包含JSON列的DataFrame进行分组

有什么方法可以在不对多索引DataFrame的列进行排序的情况下避免词法排序警告吗?

组颠倒大Pandas 数据帧