Как я могу обработать большие файлы в Ruby?

C99 доступен онлайн . Заключенный в кавычки от www.open-std.org :

lastest публично доступная версия стандарта является объединенным C99 + TC1 + TC2 +, TC3, WG14 N1256, датировался 07.09.2007. Это - рабочий документ WG14, но он отражает объединенный стандарт во время проблемы.

6
задан Svante 7 July 2009 в 09:55
поделиться

3 ответа

Если вы программируете в современной операционной системе и у компьютера достаточно памяти (скажем, 512 мегабайт), у Ruby не должно возникнуть проблем с чтением всего файла в память.

Ситуация обычно становится нестабильной, когда вы получаете примерно 2-гигабайтный рабочий набор на типичной 32-битной ОС.

-2
ответ дан 10 December 2019 в 02:52
поделиться

Вы должны попытаться поймать исключение, чтобы проверить, действительно ли проблема в блоке чтения или нет.

Просто чтобы вы знали, я уже сделал сценарий с примерно таким же синтаксисом для без проблем поиск по настоящему большому файлу размером ~ 8 ГБ.

export = File.new("resultsfinal.txt","w+")

File.open("bibrec2.dat").each do |line|
  begin
    line.scan(/[a]{1}[1234567890xX]{10}\W/) do |x|
      export.puts x
    end
    line.scan(/[a]{1}[1234567890xX]{13}/) do |x|
      export.puts x
    end
  rescue
    puts "Problem while adding the result"
  end
end
4
ответ дан 10 December 2019 в 02:52
поделиться

Что касается проблемы с производительностью, Я не вижу ничего особо тревожного по поводу размера файла: 180 МБ не должно вызывать никаких проблем. Что происходит с использованием памяти, когда вы запускаете свой сценарий?

Однако я не уверен, что ваши регулярные выражения делают то, что вы хотите. Вот, например:

/[a]{1}[1234567890xX]{10}\W/

делает (я думаю) следующее:

  • одна буква «а». Вы действительно хотите соответствовать на «а»? В этом случае будет достаточно "a", а не "[a] {1}".
  • ровно 10 из (цифр или "x" или "X")
  • одного "несловесного" символа, т.е. не az, AZ, 0-9 или подчеркивание

Здесь есть пара образцов сопоставления ISBN и здесь , хотя они, похоже, соответствуют чему-то более похожему на формат, который мы см. на задней обложке книги, и я предполагаю, что ваш входной файл удалил часть этого форматирования.

1
ответ дан 10 December 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: