使用lua读取指定行

我想在lua中读取指定的行。我有以下代码,但据我的需要,它不能正常工作,有人能帮忙吗?

#!/usr/bin/env lua

local contents = ""
local file = io.open("IMEI.msg", "r" )
if (file) then
   -- 将文件的所有内容读入字符串中
   contents = file:read()
   file:close()
   print(contents)
   specific = textutils.unserialize(contents)
   print(specific[2])
else
   print("找不到文件")
end
点赞
用户3349368
用户3349368

你可以使用io.lines来实现这个功能。io.lines函数返回文件中每一行的迭代器。如果你想要访问特定的行,你需要先将所有行加载到一个表中。

下面是一个将文件中的行存入表中并返回的函数:

function get_lines(filename)
    local lines = {}
    -- io.lines函数返回一个迭代器,因此我们需要手动将其解包为一个数组
    for line in io.lines(filename) do
        lines[#lines+1] = line
    end
    return lines
end

你可以索引返回的表来获取指定的行。

2018-05-02 13:11:21
用户9383219
用户9383219

如果你只需要读取一行,创建一个包含所有行的表格是不必要的。这个函数在不创建表格的情况下返回该行:

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 -- 未找到该行
end
2018-05-02 17:58:44