You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Amazon Rekognition打印结果触发IndexError索引越界求助

解决Amazon Rekognition Face Search的IndexError问题

这个问题我帮好几个开发者排查过类似情况——你的response['Persons']是个空列表,所以用[0]访问第一个元素时才会触发IndexError: list index out of range。

为什么会出现空的Persons列表?

主要有这几个可能的原因:

  • 你的Face Search任务没有在视频中检测到任何人脸(或者没有匹配到你指定人脸库中的人脸)
  • 任务还没完成(比如JobStatus是IN_PROGRESS),此时返回的结果还没有生成人脸数据
  • 你传入的jobID有误,对应了一个没有人脸结果的任务

怎么修复这个问题?

最直接的方案是先判断列表是否非空,再访问索引,同时最好先检查任务状态是否成功:

response = get_face_search(jobID)

# 先检查任务是否成功完成
if response['JobStatus'] != 'SUCCEEDED':
    print(f"任务状态异常:{response['JobStatus']}")
    # 如果是FAILED,可以查看response['StatusMessage']获取失败原因
    if 'StatusMessage' in response:
        print(f"失败原因:{response['StatusMessage']}")
else:
    # 检查Persons列表是否有内容
    if response['Persons']:
        time = response['Persons'][0]['Timestamp']
        print(time)
    else:
        print("视频中未检测到任何人脸或匹配结果")

额外提醒

永远不要假设API返回的列表一定有元素,尤其是涉及到AI识别的服务——因为识别结果完全依赖输入的内容。养成先判断列表长度或直接用if my_list:(空列表在Python中会被视为False)的习惯,能避免很多这类索引越界错误。

内容的提问来源于stack exchange,提问作者H.Dai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:35:56