如何处理Python字典值的TypeError: NoneType对象不可下标以持续执行
解决Netbox API采集站点数据时的TypeError问题
当通过Netbox API采集站点数据时,若部分站点的region字段值为None,直接执行region_name = site['region']['name']会触发TypeError: 'NoneType' object is not subscriptable,导致脚本中断。以下是修改后的代码,可避免该报错并完成所有站点数据采集:
sites_response = requests.request("GET", url_dcim_sites, headers=headers, data=payload) sites_json = sites_response.json() sites_results = sites_json['results'] for site in sites_results: id_number = site['id'] name = site['name'] # 处理region为None的情况,避免下标访问报错 region_name = site['region']['name'] if site['region'] is not None else "无区域" # 可选:添加status字段的容错处理,防止后续出现同样问题 status = site['status']['value'] if site['status'] is not None else "未知状态" sites = dict(ID=id_number, Name=name, Region=region_name, Status=status) format_sites = f"ID: {sites['ID']:5} | Name: {sites['Name']:20} | Region: {sites['Region']:10} | Status: {sites['Status']:5}" print(format_sites)
关键修改说明
- 针对
region字段:使用三元表达式先判断site['region']是否为None,非空时正常获取name值,为空时赋值默认文本(可根据需求修改为""或其他内容) - 额外处理
status字段:同样添加空值判断,提升脚本整体健壮性,避免后续因status为None再次触发报错
内容的提问来源于stack exchange,提问作者humbleStrength
相关产品推荐
相关产品推荐

