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,提问作者マイアカウント
相关产品推荐
相关产品推荐

