我通过网络套接字捕获数据。在这里变成了body,body里面的meta,meta里面的frame_port。但并非每个元都有一个frame_port。
当我这样做
frameport = response["body"]["meta"]["frame_port"]
如果有框架端口,我将成为框架端口
然后,如果meta中没有frame_port,我尝试将frameport设置为1,但是在这里我需要帮助。
如果执行以下操作,则在try / excpet块之前和之后都不会得到任何打印。所以这个try / excpet不起作用。任何想法如何检查meta中是否有frame_port以及是否未设置为0?
try:
frameport
except NameError:
print("no frameport defined")
frameport = 1
print("frameport is:" (frameport))
答案 0 :(得分:3)
默认使用字典的get
frameport = response["body"]["meta"].get("frame_port", 1)
请注意,这仅涵盖密钥不存在的情况。如果确实存在,但包含您不想要的值,例如None
和0,则需要分别处理该值:
frameport = response["body"]["meta"].get("frame_port", 1)
if frameport is None or frameport == 0:
frameport = 1
就您的try / catch尝试而言,它不起作用,因为此行:
frameport
无论frameport
保持什么值,都不会引发任何异常
答案 1 :(得分:1)
get
似乎对您要尝试的操作很方便:
frameport = response["body"]["meta"].get("frame_port", 1)
如果没有键"frame_port"
,则frameport
变量将设置为1。