我想在lua中读取一个特定的行。我有以下代码,但是根据我的需要它没有工作,有人可以帮忙吗?
#!/usr/bin/env lua
local contents = ""
local file = io.open("IMEI.msg", "r" )
if (file) then
-- read all contents of file into a string
contents = file:read()
file:close()
print(contents)
specific = textutils.unserialize(contents)
print(specific[2])
else
print("file not found")
end
答案 0 :(得分:3)
如果您只需要读取一行,则无需创建所有行的表。此函数返回行而不创建表:
function get_line(filename, line_number)
local i = 0
for line in io.lines(filename) do
i = i + 1
if i == line_number then
return line
end
end
return nil -- line not found
end
答案 1 :(得分:2)
您可以使用io.lines
。 io.lines
在文件中的行上返回一个迭代器。如果要访问特定行,首先必须将所有行加载到表中。
这是一个将文件的行拉到表中并返回它的函数:
function get_lines(filename)
local lines = {}
-- io.lines returns an iterator, so we need to manually unpack it into an array
for line in io.lines(filename) do
lines[#lines+1] = line
end
return lines
end
您可以索引返回的表以获取指定的行。