Прочитайте конкретную строку, используя lua - PullRequest
0 голосов
/ 02 мая 2018

Я хочу прочитать определенную строку в 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

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Если вам просто нужно прочитать одну строку, создание таблицы всех строк не требуется. Эта функция возвращает строку без создания таблицы:

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
0 голосов
/ 02 мая 2018

Для этого вы можете использовать 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

Вы можете проиндексировать возвращаемую таблицу, чтобы получить указанную строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...