Вот что я делаю (извините за имена переменных, я не использую те, в моем коде):Ruby: Есть ли лучший способ перебора нескольких (больших) файлов?
File.open("out_file_1.txt", "w") do |out_1|
File.open("out_file_2.txt", "w") do |out_2|
File.open_and_process("in_file_1.txt", "r") do |in_1|
File.open_and_process("in_file_2.txt", "r") do |in_2|
while line_1 = in_1.gets do
line_2 = in_2.gets #input files have the same number of lines
#process data and output to files
end
end
end
end
end
Метод open_and_process просто открыть файл и закрыть его, как только это сделано. Это взято из книги кирки.
В любом случае основная проблема заключается в том, что код вложен слишком глубоко. Я не могу загрузить все содержимое файлов в память, поэтому мне нужно итерации по очереди. Есть лучший способ сделать это? Или, по крайней мере, преувеличить его?
мне нравится то, что вы сделали, но я доступ к обеим линиям одновременно, поэтому, если бы я использовал его таким образом, мне пришлось бы добавить больше переменных, чтобы поддерживать состояние между чтением каждой из двух строк, и это делает его слишком сложным. Думаю – zxcvbnm
Если я понимаю, что вы говорите, строки оба одновременно доступны одновременно - на каждом шаге цикла while строки будут представлять собой массив из двух элементов, содержащий последний прочитанный li ne из каждого входного файла. –