Как начать читать файл не с первой строки, а со 2й?

Страницы: 1
RSS
Как начать читать файл не с первой строки, а со 2й?, исторические данные
 
Пытаюсь понять как работают свечи, для этого читаю файлы исторических данных. Как читать с 1й строки разобрался, а вот как читать со второй не могу понять, методом тыка не получилось, вот пример текста файла (пока ручками удаляю 1ю строку и работаю с данными)
Код
<TICKER>,<PER>,<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>
LKOH [TQBR],All,20180219,181300,3727.500000,3727.500000,3722.000000,3726.500000,1106.000000
LKOH [TQBR],All,20180219,181400,3724.500000,3724.500000,3723.000000,3724.500000,789.000000
LKOH [TQBR],All,20180219,181500,3724.500000,3726.000000,3719.000000,3720.000000,1525.000000

а вот часть кода, где в цикле файл читается построчно
Код
...
 f = io.open("TQBR_LKOH_15.txt","r+"); 
  ------------------цикл перебора строк->-------------------------
   for line in f:lines() do
...

команду вроде бы и нашел, по крайней мере по смыслу походит
Код
file:seek ([whence] [, offset])
но, что означает Смещение (offset) и в чем оно измеряется не понял, что понимается под смещением байт, бит, символ? Если это строки, то устанавливая 1 после запятой все равно читает с первой строки. Как это можно сделать?
человек (не робот)
 
Андрей,
Здравствуйте,
Для чтения строк можно использовать io.lines
пример по ссылке
 
Как строки читать я знаю, для этого не обязательно давать ссылку на сайт, где нет ответа на поставленный вопрос в теме, мне нужно читать файл со второй строки , или с 10й или с 2900? Как в принципе можно выполнять цикл чтения файла с какой либо строки начиная от начала?
человек (не робот)
 
Андрей,
А что мешает в цикле который указан по ссылке пройти по всем строкам до нужной? А не нужные, просто игнорировать.
К слову разработчики Lua именно так и советуют
 
Цитата
Sergey Gorokhov написал:
А что мешает в цикле который указан по ссылке пройти
Спасибо, я думаю мешает время. Хорошо если хочется посмотреть информацию по одному файлу, а если в папке их (файлов) несколько (много) это выливается во время, ну если нет, то нет, просто думал может есть что то такое, простое.
человек (не робот)
 
Кстати, вот пример из Вашей ссылки
Код
local lines = {}    -- read the lines in table 'lines'
    for line in io.lines() do
      table.insert(lines, line)
    end
    -- sort
    table.sort(lines)
так вот будет работать? или нет?
Код
  for line=2000 in io.lines() do
      table.insert(lines, line)
    end
человек (не робот)
 
Может я не понял вопроса, но я делаю так.

Myfile:seek("set",0);   "set"-начало файла   "end"-конец "cur"-текущая позиция offset-смещение с начала строки в символах(0-крайнее      левое положение)

 i = 0;
 for line in Myfile:lines() do
     i = i + 1;
     if i == 20 then --находим нужную строку по порядку от начала
     ------действия
    -------
         break;
     end;
 end;
 
Цитата
Игорь Б написал:
for line in Myfile:lines() do
     i = i + 1;
     if i == 20 then --находим нужную строку по порядку от начала
Спасибо я понял, это классический вариант на си, я думал в луа есть что то более короткое типа, но видимо нет, хотя можно ведь это легко проверить
Код
for line=20 in io.lines() do
      table.insert(lines, line)
    end
 
нет такое не работает ни в каком виде
Код
f = io.open("Test.txt","r");
f:seek("set",0);
for line=3, f:lines() do
      print(line)
    end
 
Цитата
Andrey.R написал:
нет такое не работает ни в каком виде
Код
  f  =   io.open ( "Test.txt" ,"r");
f:seek( "set" , 0 );
 for  line =  3 , f:lines()  do 
       print (line)
     end   
Я тебе предложил не так.
Твой вариант должен быть такой.

Myfile = io.open("Test.txt","r+");
Myfile:seek("set",0);  
i = 0;
 for line in Myfile:lines() do
     i = i + 1;
     if i == 3 then  
------действия
-------
break;
     end;  
 end;
 
Цитата
Игорь Б написал:
Я тебе предложил не так.
то что вы предложили я понял и сказал за это вам спасибо еще в прошлый раз, тему можно закрыть, она себя исчерпала
Страницы: 1
Читают тему
Наверх