lua - 尝试索引本地“文件”(零值)?
问题描述
我正在电晕模拟器中做一个项目,该项目涉及从项目目录中的 csv 文件(“car.csv”)中读取一些数据,我有这段代码应该读取第一行,但是当我运行它它给了我错误“尝试索引本地'文件'(一个零值)”。知道如何解决这个问题吗?
local function init()
local path = system.pathForFile( "car.csv", system.DocumentsDirectory );
local file = io.open(path, "r");
line = file:read();
print(line);
end
由于某种原因,它不会将其读入“文件”。
编辑:好的,如果我使用完整路径而不是它的相对文件路径。但是我需要使用相对的,我不知道为什么它不起作用。
解决方案
使用时io.open
,在尝试读取文件之前,您应该始终确保它确实成功,否则您将收到一个丑陋的“尝试索引 nil”错误。
如果您希望您的程序仍然崩溃,只需执行
local file = assert(io.open(path, 'r'))
如果找不到文件,它将为您提供更有用的错误消息。或者,您也可以手动保存返回值io.open
并检查错误:
local file, err, code = assert(io.open(path))
if not file then
print("Error opening file", path, err)
-- Do something to handle the error
end