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

PyCharm运行手势识别代码报AttributeError: 'NoneType'无split属性求解

报错原因
  1. 报错触发点为split_sentence函数中调用text.split(" ")的代码行,根本原因是传入该函数的text变量为None,没有split属性。
  2. 代码中text初始值为空字符串,但在满足「检测到有效手势轮廓、轮廓面积>10000、模型预测置信度>80%」三个条件时,会被重新赋值为get_pred_text_from_db(pred_class)的返回值。
  3. get_pred_text_from_db函数仅在查询到数据库匹配记录时返回手势名称,若传入的pred_class在数据库的gestureisl表中不存在对应记录,函数没有显式返回值,默认返回None,导致后续调用split_sentence时传入空值触发报错。
修复方案

方案1:修改数据库查询函数,兜底返回空字符串

修改get_pred_text_from_db函数,查询无匹配结果时返回空字符串而非默认的None:

def get_pred_text_from_db(pred_class):
    conn = sqlite3.connect("gestureisl_db.db")
    cmd = "SELECT g_name FROM gestureisl WHERE g_id=" + str(pred_class)
    cursor = conn.execute(cmd)
    for row in cursor:
        return row[0]
    # 新增以下代码,无匹配结果时返回空字符串
    return ""

方案2:调用split函数前做空值兼容处理

在调用split_sentence前对text做非空判断,兜底设为空字符串:
将原代码中

splitted_text = split_sentence(text, 2)

修改为:

splitted_text = split_sentence(text if text is not None else "", 2)

可选根因排查

如果业务上不应该出现查询不到的情况,可以额外检查以下两点:

  • 确认gestureisl_db.db数据库的gestureisl表中,g_id字段覆盖了模型所有可能输出的分类id
  • 检查模型输出的分类id范围和数据库中存储的g_id范围是否完全匹配

内容的提问来源于stack exchange,提问作者Reetika Bhanushali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:24:03