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

Python类方法frame_array无法返回列表和字符串、执行不到return怎么办?

问题原因

你当前的try-except代码捕获了所有类型的异常但没有打印具体错误信息,无法定位具体崩溃点,程序在执行到print和return语句前就抛出异常被捕获了,所以不会走到返回逻辑。
常见的崩溃点如下:

  • 目标路径./data/text_data为空,或者os.listdir返回的第一个元素是子目录而非文本文件,拼接后路径不存在,打开文件失败
  • 读取的文件中存在空行,执行line[0] == "#"判断时触发字符串索引越界
  • #开头的行中/分隔的片段数量不足8个,执行split("/")[7]时触发列表索引越界
  • 非#开头的行长度不足2,或者按逗号拆分后元素数量不足20个,执行切片、索引取值时报错
  • 整个文件中没有#开头的行,self.file_name未初始化,返回时触发属性不存在错误

修复方案

第一步:先放开异常捕获定位问题

将调用处的异常捕获逻辑修改为打印具体错误,方便定位:

try:
    file_name, vec_lists = self.frame_array(self.cfg["text_file_directory"])
except Exception as e:
    print(f"调用frame_array出错:{e}")
    # 调试阶段可以取消下一行注释,直接抛出异常查看完整调用栈
    # raise

第二步:给方法增加边界判断,避免异常

修改后的frame_array方法参考:

def frame_array(self, text_file_path):
    # 先判断路径下是否存在文件
    file_list = os.listdir(text_file_path)
    if not file_list:
        raise FileNotFoundError(f"路径{text_file_path}下没有文件")
    text_file = os.path.join(text_file_path, file_list[0])
    # 提前初始化file_name,避免没有#行时报错
    self.file_name = ""
    self.vec_lists.clear() # 避免上次运行的残留数据影响
    with open(text_file, "r", encoding="utf8") as file:
        for line in file:
            line = line.strip()
            # 跳过空行
            if not line:
                continue
            if line.startswith("#"):
                split_parts = line.split("/")
                # 判断分割后的长度是否足够
                if len(split_parts) >=8:
                    self.file_name = split_parts[7]
                count = 0
            else:
                # 去掉末尾换行和空白再拆分
                list_of_items = line.rstrip('\n').split(",")
                # 判断元素数量是否足够
                if len(list_of_items) < 20:
                    continue
                count += 1
                vec_list = []
                for i in range(19):
                    vec_list.append(float(list_of_items[i + 1]))
                self.vec_lists.append(vec_list)
    print("vec list created\nOK")
    return self.file_name, self.vec_lists

内容的提问来源于stack exchange,提问作者Lakpa Tamang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:36:09