Python 统计指定文件夹空文件数达2即终止循环的实现问题
空文件统计代码问题排查与修复
原代码核心问题
- 终止逻辑错位:原代码只要遇到大小≥2的文件就执行
break,并非检测到2个空文件时终止,会因提前遇到非空文件中断整个统计流程 - 达标判断缺失:没有在空文件计数达到2时主动触发预期输出和任务终止
- 统计范围混淆:
os.listdir返回结果包含子文件夹,未排除非文件条目会导致统计结果失真 - 输出位置错误:空文件达标的提示语句放在了异常捕获块中,正常执行流程永远不会触发该输出
修复后代码
import os dir_path = 'C:\\temp\\cmm_temp\\tmp\\' totFilesEmpty = 0 for fname in os.listdir(dir_path): try: full_path = os.path.abspath(os.path.join(dir_path, fname)) # 仅统计普通文件,跳过子文件夹 if os.path.isfile(full_path): # 空文件判断:大小为0,避免误判1字节的非空文件 file_size = os.stat(full_path).st_size if file_size == 0: totFilesEmpty += 1 # 计数达到2时输出提示并终止任务 if totFilesEmpty == 2: print("number of empty files == 02") break except Exception as ab: print(f"处理文件时出错:{ab}")
修复说明
- 新增
os.path.isfile校验,排除子文件夹等非文件条目,统计范围符合需求 - 修正空文件判断逻辑为
st_size == 0,避免将1字节的非空文件误判为空文件 - 新增计数达标判断逻辑,检测到2个空文件时立即输出预期提示并跳出循环
- 调整异常输出逻辑,仅在实际处理出错时打印错误信息,不干扰正常统计流程
内容的提问来源于stack exchange,提问作者gfernandes
相关产品推荐
相关产品推荐

