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

Godot解析CSV文件触发Invalid get index '1'错误如何解决

报错原因

报错Invalid get index: '1' (on base: PoolStringArray)的核心是get_csv_line()返回的字符串数组长度小于2,无法访问下标为1的元素,常见触发场景如下:

  • CSV文件末尾存在多余空行:大多数文本编辑器保存CSV时会默认在末尾追加换行符,当读取到最后一行空内容时,get_csv_line()会返回仅包含空字符串的长度为1的数组,此时访问line[1]就会触发错误。
  • CSV行格式不符合预期:存在部分行缺少第二个字段,或者分隔符不是get_csv_line()默认的逗号,导致整行内容被识别为单个元素。
  • 文件打开失败:代码未判断open()方法的返回结果,若文件不存在、路径错误导致打开失败,后续读取行的操作会一直返回空数组,也会触发该错误。
解决方法
  • 新增文件打开成功校验
    执行文件打开操作后先判断返回结果,避免读取无效文件:
func _ready():
    var file = File.new()
    var open_status = file.open("user://scores.csv", file.READ)
    if open_status != OK:
        print("分数文件打开失败,错误码:", open_status)
        file.close()
        return
    # 后续读取逻辑
  • 读取行后先校验数组长度再访问元素
    每次拿到解析后的行数据后,先判断数组长度是否符合要求,跳过空行和格式错误的行:
var text = ""
while !file.eof_reached():
    var line = file.get_csv_line()
    # 跳过长度不足的无效行
    if line.size() < 2:
        continue
    text += "%s: %s\n" % [line[0], line[1]]
file.close()
  • 适配CSV分隔符
    如果你的CSV文件使用了非逗号的分隔符(比如分号、制表符),可以给get_csv_line()传入第二个参数指定分隔符,例如分号分隔的文件调用file.get_csv_line(";")解析。
  • 清理CSV无效内容
    手动打开CSV文件,删除末尾多余空行,检查所有行的格式是否符合字段1,字段2的要求。

内容的提问来源于stack exchange,提问作者マイアカウント

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:06:00