循环停止时,一个文件不能被扫描,而不是跳过并移动到下一个文件在Python?



我使用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)

最新更新