Построчное чтение файла.



  • V2.1

    sf_file_str.zip

    commands описание
    start получить первую строку
    end получить последнюю строку
    start i_start i_end получить от начала файла от строки номер i_start до строки номер i_end
    end i_start i_end получить от конца файла (реверс) от строки номер i_start до строки номер i_end
    rand получить случайную строку
    search str out-first найти строку, начинающуюся с str
    search str out-all найти все строки, начинающиеся с str
    var full_path_exe = "D:\\test\\rand_str.exe";
    var full_path_file = "D:\\test\\res.txt";
    var commands = "your commands";
    
    var args = full_path_file + " " + commands;
    native_async("processmanager", "start", JSON.stringify({location: full_path_exe, working_folder: "", waitfinish: true, arguments: args, version: 2}))!
    try{
      var split = _result().split(",")
      var output= base64_decode(split[0])
      var error_msg= base64_decode(split[1])
    }catch(e){
      var output= _result()
    }
    log(output);
    
    // для пробелов
    var str = "\"строка с пробелом\""
    

    как получить full_path_exe:


    V1

    пример кода
    rand_str.exe - выдаёт случайную строку
    file_res - ваш файл из которого надо получить случайную строку

    var file_exe = "D:\\test\\rand_str.exe";
    var file_res = "D:\\test\\res.txt";
    native_async("processmanager", "start", JSON.stringify({location: file_exe, working_folder: "", waitfinish: true, arguments: file_res, version: 2}))!
    try{
      var split = _result().split(",")
      var output= base64_decode(split[0])
      var error_msg= base64_decode(split[1])
    }catch(e){
      var output= _result()
    }
    log(output);
    

    rand_str.exe

    преимущества: скорость работы и низкое потребление ресурсов.

    p.s. осталось научиться из rust компилировать dll для BAS





  • @super84 это вроде как подгружает в оперативку данные файла и метаданные/индекс для работы ресурса.

    тут же более экономичный по ресурсам железа способ получить случайную строку из файла.(на линуксе со старого hdd из 5.2мб файла с прокси в среднем за 0.009-0.010 сек)
    в пакете набор для получения строк под разные параметры есть, я включил только случайную строку.(получить первую или последнею строку, вывести строки в цикле от 1 до последней или от последней до первой. реализация получения конкретной строки(по порядковому номеру) не смотрел какие варианты реализации есть)



  • Добавлю в копилку. Возможно кому-то пригодится вариант батника, не помню когда-то нашел давно:randline.bat

    А еще, если нужно мешать мега- и гигабайтные файлы - берите shuf.exe из комплекта git, самое быстрое решение.



  • @seoshnek батник медленей



  • @super84 вообще у ресурсов BAS есть api для получения случайного элемента



  • добавлена новая версия с новым функционалом



  • у версии 2 ошибка с функцией rand



  • @tet-vivi said in Построчное чтение файла.:

    у версии 2 ошибка с функцией rand

    исправлена ошибка, или просто ошибка?



  • @Fox нет, не исправлена.

    код на др. пк. там перекомпилирую и выложу сегодня или завтра.

    даже код тут висел для использования с ошибками(исправлено)



  • исправил работу функции rand (V2.1)


Log in to reply