Работа с большими списками (файлами)



  • Здравствуйте.
    Есть большие файлы 500К и более строк - при "Файл в список" и "Ресурс в список" - зависает напрочь :(
    Можно ли\Как положить в список не весь файл, а например первые 1К строк?
    Когда эти строки закончились - взять след. 1К и т.д.



  • @lirik В команде "Читать файл" есть выбор первого и последнего байта
    0_1495257063935_forum2.png

    используйте как угодно. Можно сделать функцию, в ней цикл выбора 500к, а в скрипте условие, выбора следующих 500к.



  • @Fox Спасибо. Пробовал так, но я же не знаю сколько "байт" будет. Можно было бы брать и 1 (допустим певую) строку, но их длина отличается. Т.е. если в файле есть список например:

    00cats_ru
    00ekb
    00element00
    00far.cry3
    00g_o_d_l_i_k_e00
    00ham1
    00id17009256686
    00karandash00
    00l0l
    00ladynatali777
    00luxury00
    00margo00
    00mdk
    

    то я не могу указать конкретное число "Последний байт", т.к. у каждой строки разное кол-во.

    Попробовал брать регуляркой

    ^.*$
    

    берёт то что надо, но вот вопрос как теперь удалить эту строку из "FILE_CONTENT" ?
    Оно ведь не кладёт каждую строку в массив, а всё в 1 переменную

      FILE_CONTENT: "00g_o_d_l_i_k_e00
    00margo00
    00o00o0o0o00o00
    00princess
    00rub
    00rules
    00thenewworld00
    00xam..."
    


  • @lirik может проще будет разбить этот большой файл, на более мелкие по n количество строк, например с помощью KeyWordKeeper , и задать маску имени файла 1.txt, 2.txt и.т.д. И в цикле for потом пробегаемся по каждому файлику.

    for 1 до n:
       применяем действие Читать файл или Читать файл в список 
       указав в качестве пути C:/path/[[CYCLE_INDEX]].txt
    

    Скачать KeyWordKeeper : http://www.rusdocs.com/razrezat-tekstovyj-fajl-txt-na-chasti-ili-po-strokam



  • @santilo На самом деле так и делаю :) Но это жеж не феншуй совсем :(
    Наверняка должен быть способ сделать без "лишних манипуляций"
    Короче вот такое решение получается:

    1. "Читать файл" - получаем переменную со списком
    2. Регуляркой берём строку
    3. "Заменить Строку" - заменяем на "ни что" (пустоту)
    4. есть ещё 1 проблема - как удалить пустую строку. Наверно javascript-ом, но я не умею :( Подскажите кто-то плз.
    5. "Сохранить файл"


  • @lirik сейчас можно сделать так, сложновато правда. Нужно в цикле читать по байтно файл до символа перевода строки, как только его встретили - собирать в строку. Правда не знаю, возможно в стандартном действии этот файл автоматически заменяется, то есть посмотреть на него нельзя будет, но нужно тестировать.

    Как вариант - перенесите Ваш список в базу, тогда нагрузка точно упадет.



  • Варик с базой норм., но есть проблемка :( Этот файл заполняет другой проект. Т.е.
    Проект 1 (парсер) заполняет файл baza.txt
    Проект 2 (обработчик) берёт строку из файла baza.txt и "мандражирует" с ней :)
    И всё это онлайн.
    Проект 1 (парсер) заполняет файл baza.txt не построчно, а сразу неск. значений (массив) 5-10 - т.е. заливать в базу построчно "Вставить Запись" тоже не очень
    @DrPrime а подскажи ПЛЗ как удалить пустую строку? Наверняка знаешь :) Что-то типо trim() или ещё как-то

    FILE_CONTENT: "
    
    00o00o0o0o00o00
    00princess
    00rub
    00rules
    00thenewworld00
    00xam..."
    


  • @lirik спарси в список переменную по символу переводк строки \n вроде, удали по значению



  • @lirik Если так принципиально именно разбить, то можно с помощью командной строки..
    Запустить процесс

    setlocal enabledelayedexpansion
    set q=0
    set N=100
    for /F "delims=   " %%i in (file.txt) do (
    set /a q+=1
    if !q! GTR !N! set /a N+=100
    @echo %%i >> file!N!.txt
    )
    

    file.txt имя файла
    цифра 100 это количество строк на которое разбивать файл (меняется в двух местах).


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.