![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
![]()
Добрый день, уважаемые форумчане!
Имеется Большой файл .txt (около 14 млн. строк). 1 строка - 1 слово. Пытаюсь разбить его по 1 млн. строк. У EducatedFool на сайте есть макрос разбиения текстового файла на файлы с заданным количеством строк. Но на моем выдает ошибку 7 "Мало памяти". Вручную как-то не очень хочется его делить. Подскажите варианты. Поиск вразумительных вариантов не дал. Заранее спасибо! P.S. Щас придет Hugo, загонит все и всех в массивы, поделит и выгрузит ![]() |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Не, 14000000 в массив думаю не стОит (и впрямь памяти может не хватить), читайте построчно в массив (1 to 1000000, 1 to 1), затем массив на лист и снова по кругу, пока файл закончится. Будет может медленнее, но зато будет.
Или сразу на лист - но это ооочень долго...
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 27.05.2013 в 21:41. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
![]()
У меня мало оперативной памяти на компьютере (2 Гб), но этот код выполнился:
Код:
до запуска этого кода было 735 МБ оперативной памяти; максимальное количество было задействовано оперативной памяти во время работы кода: 1,4 ГБ. Получается, что для такого массива понадобилось: 1400 МБ - 735 МБ = 665 МБ Последний раз редактировалось Скрипт; 27.05.2013 в 21:55. |
![]() |
![]() |
![]() |
#4 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]() Цитата:
тобою уже пользователей пугают... strannick, очень правильный ход - если задача не очень интересная, а ответ получить надо (обратите внимание, кто ответил первым)))), правда есть одна ошибка... Hugo121, он еще и в словарь может, причем ему удавалась загнать в словари такие слова..., котырые до этого ни в одном словаре не встречались (Даль и Ожегов - отдыхают)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
У меня тоже отработало.
Я говорил немного о другом - если сразу весь текст прочитать в переменную, затем бить в массив - то это нужно 2*14м строк (т.е. держать весь файл 2 раза в памяти). Затем переменную можно убить, и частями перекладывать из большого массива в миллионные - т.е. 14м+1м. Если же объявлять по миллиону, заполнять из файла, выгружать и снова - то максимум миллион и одна текущая строка (ну или что там из файла будет в памяти) - что намного меньше. Ну и сам заполняемый файл Экселя тоже где-то как-то должен жить.
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
![]() Цитата:
IgorGO насчет словарей - это я забыл))) было дело и неоднократно. Кстати, мой исходный файл - это словарь (английские слова и буквосочетания). Вот такой каламбурчик. Hugo121 Видел на планете по такой почти теме вариант через массив, но не въехал. А вот "построчно" упоминание тоже встречалось, но примера так и не нашел. В загашниках не найдется? |
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
![]() Цитата:
Текстовый файл чуть больше 16 млн.строк. Строка длинной 60 символов. Файл 998 метров. Скальпель режет на файлы по 1 млн. строк со скоростью 1 файл -3 секунды. Памяти берет 30 метров.
Анализ,обработка данных Недорого
Последний раз редактировалось doober; 28.05.2013 в 00:36. |
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
По задаче словарь не нужен - с ним возни больше. Набрать в словарь легко, выгрузить сложнее.
Вот нашёл пример чтения построчно - там правда ещё и словарь, и разбивка строк в массив - на это не смотрите ![]() Код:
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#9 | |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
![]() Цитата:
strannick, в двух процедурах в константах нужно указать пути и имена текстовых файлов. Код:
Последний раз редактировалось Скрипт; 28.05.2013 в 08:31. |
|
![]() |
![]() |
![]() |
#10 | |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
![]() Цитата:
вот еще вариант: Код:
Правильно поставленная задача - три четверти решения.
Последний раз редактировалось DiemonStar; 28.05.2013 в 08:49. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
импорт данных из большого txt файла | Неологист | Microsoft Office Excel | 14 | 28.09.2011 18:45 |
Импорт в эксел очень большого файла txt | danika24 | Microsoft Office Excel | 10 | 20.07.2011 16:34 |
Импорт данных из текстового файла | chobo | Microsoft Office Excel | 7 | 28.10.2010 14:29 |
Обработка большого текстового файла и составление по нему отчета | erosss | Помощь студентам | 6 | 05.05.2010 13:18 |