Python ';非类型';对象没有属性';遵守';

Python ';非类型';对象没有属性';遵守';,python,printing,raspberry-pi,nonetype,Python,Printing,Raspberry Pi,Nonetype,我是python新手,我正在开发一个带有RaspberryPi和passport eye模块的passport扫描仪。最后,它打印出扫描图像的结果。但是,如果扫描仪无法检测到MRZ代码,我还想打印结果 我尝试了一些方法,但无法解决问题,简而言之,下面是一个示例: mrz = read_mrz("test.jpg") mrz_data = mrz.to_dict() if mrz.to_dict == None: print("Invalid document&q

我是python新手,我正在开发一个带有RaspberryPi和passport eye模块的passport扫描仪。最后,它打印出扫描图像的结果。但是,如果扫描仪无法检测到MRZ代码,我还想打印结果

我尝试了一些方法,但无法解决问题,简而言之,下面是一个示例:

mrz = read_mrz("test.jpg")
mrz_data = mrz.to_dict()

if mrz.to_dict == None:
 print("Invalid document")

else:
 print(mrz_data["names"])
错误 mrz_data=mrz.to_dict()AttributeError:'NoneType'对象没有属性'to_dict'

编辑:当错误为“非类型”时,是否有方法打印对象没有属性“to_dict”

-

返回的对象(除非它是None,这意味着没有检测到ROI)包含从MRZ提取的字段以及一些元信息

看起来您正在使用的图像返回
None
。在第2行中,当您在
None
上调用
to_dict()
时,它抛出异常
“NoneType”对象没有属性“to_dict”

这可以按如下方式进行修复

if mrz == None:
 print("Invalid document")

else:
 print(mrz.to_dict()["names"])

不确定这是否会导致任何问题,但编写
something is None
而不是
something==None
是一种很好的做法。您必须对
None
的可选项值执行检查–在使用该值后进行检查为时已晚。因此,如果mrz为None,那么应该有一些
在尝试读取之后。谢谢Karan!这对我有用。