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

Python使用DBR扫描文件遇错循环终止,需实现跳过错误文件功能

解决DBR条码扫描循环遇错终止的问题

问题根源

  1. 原代码的try-except包裹了整个循环,单个文件处理出错会直接终止整个循环,无法继续处理后续文件。
  2. 当文件无法识别条码时,reader.decode_file()返回None,后续遍历results会触发TypeError: 'NoneType' object is not iterable,且原代码未捕获该类型错误。
  3. 仅捕获BarcodeReaderError,未覆盖文件读取错误、类型错误等其他可能的异常。

修正方案

将错误捕获逻辑移至单个文件处理的循环内部,确保单个文件出错时跳过该文件,继续处理后续文件;同时增加结果判空和多类型异常捕获。

修改后的完整代码

import glob
import pandas as pd
from dbr import BarcodeReader, BarcodeReaderError

image_path = 'C:/Users/username/Samples/'
image_list = glob.glob(image_path + '*')

barcodes = {}
# 初始化BarcodeReader(原代码缺失,需补充)
reader = BarcodeReader()
# 若需要激活密钥,添加以下代码:
# reader.init_license("你的DBR密钥")

for idx, file_path in enumerate(image_list):    
    try:
        results = reader.decode_file(file_path)
        
        # 先检查是否识别到条码,避免遍历None引发错误
        if results is None:
            print(f"跳过文件: {file_path.replace(image_path, '')}(未识别到条码)")
            continue
            
        for result in results:
            # 存储文件名和对应的条码文本
            barcodes[file_path.replace(image_path, '')] = result.barcode_text 
            print(f"已处理: {file_path.replace(image_path, '')}")  
            
    except BarcodeReaderError as bre:
        print(f"跳过文件: {file_path.replace(image_path, '')}(DBR错误: {bre})")
        continue
    except TypeError as te:
        print(f"跳过文件: {file_path.replace(image_path, '')}(类型错误: {te})")
        continue
    except Exception as e:
        # 捕获其他未预料的异常,保证循环不中断
        print(f"跳过文件: {file_path.replace(image_path, '')}(未知错误: {e})")
        continue

# 生成结果DataFrame
barcodes_df = pd.DataFrame(list(barcodes.items()), columns=['filename', 'barcode'])
# 释放资源
del reader

关键修改说明

  • 错误捕获移至循环内部:每个文件的处理逻辑单独包裹在try-except中,出错后通过continue跳过当前文件,继续处理下一个。
  • 增加结果判空:提前判断results是否为None,直接跳过无条码的文件,避免后续遍历触发类型错误。
  • 多类型异常捕获:覆盖BarcodeReaderError、TypeError及通用Exception,确保所有可能的错误都被捕获,不会中断循环。
  • 清晰的日志输出:打印每个文件的处理状态或错误信息,方便后续排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:45:30