我使用Python中的DBR包来扫描文件并解码条形码。问题是,当看到错误时,循环会停止。我希望它跳过文件,如果有一个错误,并解码下一个文件,直到所有的文件完成(无论是扫描或错误)。这是我正在使用的一部分代码。
image_path = 'C:/Users/username/Samples/'
image = glob.glob(image_path + '*')
barcodes = {}
try:
for i,v in enumerate(image):
results = reader.decode_file(v)
for result in results:
#if len(result.barcode_text) <= 31:
#barcodes[v.rsplit('\',1)[1]] = result.barcode_text
barcodes[v.replace(image_path, '')] = result.barcode_text
print(v.replace(image_path, ''))
barcodes_df = pd.DataFrame(list(barcodes.items()), columns=['filename', 'barcode'])
del reader
# except:
# #print(e)
# pass
except BarcodeReaderError as bre:
print(bre)
我试过了,但是没有达到我想要的效果。有人能帮忙吗?我不能使用任何其他库,所以它必须是DBR。
这是当它到达无法扫描的文件时得到的错误。
TypeError: 'NoneType' object is not iterable
我可以使用下面的代码忽略这个问题。我必须将空列表赋值给变量"results"。基本上是空的
image_path = 'C:/Users/username/Samples/'
image = glob.glob(image_path + '*')
barcodes = {}
try:
for i,v in enumerate(image):
results = reader.decode_file(v)
if results is None:
results = []
for result in results:
#if len(result.barcode_text) <= 31:
#barcodes[v.rsplit('\',1)[1]] = result.barcode_text
barcodes[v.replace(image_path, '')] = result.barcode_text
print(v.replace(image_path, ''))
barcodes_df = pd.DataFrame(list(barcodes.items()), columns=['filename', 'barcode'])
del reader
# except:
# #print(e)
# pass
except BarcodeReaderError as bre:
print(bre)