You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python递归函数值保留问题:修复es68函数计数重置Bug

解决递归统计指定扩展名文件数量的问题

原代码问题分析

  • 递归调用未累加子目录计数:每次进入递归函数都会重新初始化c=0,但调用子目录的递归函数后,没有将返回结果加到当前的c中,导致子目录的文件计数完全丢失。
  • 扩展名判断逻辑不准确:用estensioni in name会匹配文件名中任意位置包含该字符串的情况(比如test.txt.bak会被误判为.txt文件),无法精准匹配文件后缀。

修正后的代码

import os

def es68(dir, estensioni): 
    c = 0
    for name in os.listdir(dir):
        if name.startswith('.'):
            continue
        pathname = os.path.join(dir, name)
        # 先判断是否为文件,再检查扩展名
        if os.path.isfile(pathname):
            if os.path.splitext(name)[1] == estensioni:
                c += 1
        # 若是目录,递归调用并累加子目录的计数结果
        elif os.path.isdir(pathname):
            c += es68(pathname, estensioni)
    return c

关键修改说明

  • 递归计数累加:将子目录递归调用的返回值es68(pathname, estensioni)直接加到当前的c变量中,确保子目录的文件计数被汇总到总结果里。
  • 精准匹配扩展名:使用os.path.splitext(name)[1]获取文件的后缀名,再与目标扩展名做严格相等匹配,彻底避免误判情况。
  • 调整判断顺序:先处理文件的扩展名检查,再处理目录的递归逻辑,代码逻辑更清晰直观。

内容的提问来源于stack exchange,提问作者mansto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:50:21