Python异常处理:遍历文件名提取数字时捕获ValueError不中断迭代
实现代码及逻辑说明
以下是可直接运行的完整实现:
import os genders = [] face_dir = 'Face' for image in os.listdir(face_dir): file_path = os.path.join(face_dir, image) # 跳过子目录,仅处理文件 if not os.path.isfile(file_path): continue try: name_segments = image.split('_') # 文件名无下划线的场景直接抛出异常进入删除逻辑 if len(name_segments) < 2: raise ValueError gender = int(name_segments[1]) genders.append(gender) except ValueError: # 捕获所有无效文件名场景,直接删除文件 os.remove(file_path)
实现逻辑说明
- 修正了原代码的缩进错误,将
genders.append移入循环内且仅在转换成功时执行,避免无效值加入列表 - 补充了文件类型校验,避免误删Face目录下的子文件夹
- 覆盖两类无效场景:文件名无下划线、下划线后无有效数字,所有异常仅作用于单次循环,不会中断整体遍历
- 构造文件完整路径后再执行删除操作,避免相对路径导致的文件找不到问题
内容的提问来源于stack exchange,提问作者tornike
相关产品推荐
相关产品推荐

